A Python program is available to help you plot, visualize, and analyze the results collected with the PMUv3 plugin.
You need python3
and a number of Python packages.
If you are running on Ubuntu, install the following packages:
sudo apt install python-is-python3 python3-pip python3-venv -y
Create and activate a Python virtual environment:
python3 -m venv venv
source venv/bin/activate
Next, use Pip to install the required packages:
pip install pandas pyyaml matplotlib PyPDF2
Download the Python application code to plot and analyze results:
git clone https://github.com/GayathriNarayana19/Performance_Analysis_Backend.git
Copy the code below into a file named config.yaml
in your test/
directory which contains your CSV files:
base_dirs:
- path: '.'
output_file: 'metrics.csv'
output_dir: './test_plotting/'
base_filename: 'bundle{}.csv'
num_bundles: 15
scenarios:
- "test1: section1"
title: 'Section1'
#########DO NOT MODIFY BELOW THIS LINE##########
kpi_metrics:
- - ['L1_I-cache_MPKI', ['L1I_CACHE_REFILL', 'INST_RETIRED']]
- ['I-side_page_table_MPKI', ['ITLB_WALK', 'INST_RETIRED']]
- ['L2_cache_MPKI', ['L2D_CACHE_REFILL', 'INST_RETIRED']]
- ['Branch_MPKI', ['BR_MIS_PRED_RETIRED', 'INST_RETIRED']]
- ['D-side_page_table_MPKI', ['DTLB_WALK', 'INST_RETIRED']]
- ['L1_D-cache_MPKI', ['L1D_CACHE_REFILL', 'INST_RETIRED']]
- ['LLC_cache_MPKI', ['LL_CACHE_MISS_RD', 'INST_RETIRED']]
- - ['L1_data_TLB_read_miss_rate', ['L1D_TLB_REFILL_RD', 'L1D_TLB_RD']]
- ['L2_TLB_miss_rate', ['L2D_TLB_REFILL', 'L2D_TLB']]
- ['L2_TLB_write_miss_rate', ['L2D_TLB_REFILL_WR', 'L2D_TLB_WR']]
- ['L2_TLB_read_miss_rate', ['L2D_TLB_REFILL_RD', 'L2D_TLB_RD']]
- ['L1_data_TLB_miss_rate', ['L1D_TLB_REFILL', 'L1D_TLB']]
- ['L1_instruction_TLB_miss_rate', ['L1I_TLB_REFILL', 'L1I_TLB']]
- ['L1_data_TLB_write_miss_rate', ['L1D_TLB_REFILL_WR', 'L1D_TLB_WR']]
- - ['L1_D-cache_read_miss_rate', ['L1D_CACHE_REFILL_RD', 'L1D_CACHE_RD']]
- ['L1_D-cache_write_miss_rate', ['L1D_CACHE_REFILL_WR', 'L1D_CACHE_WR']]
- ['L1_D-cache_miss_rate', ['L1D_CACHE_REFILL', 'L1D_CACHE']]
- ['L1_I-cache_miss_rate', ['L1I_CACHE_REFILL', 'L1I_CACHE']]
- ['L2_cache_miss_rate', ['L2D_CACHE_REFILL', 'L2D_CACHE']]
- ['L1_D-cache_rate_of_cache_misses_in_L1_and_L2', ['L1D_CACHE_REFILL_OUTER', 'L1D_CACHE_REFILL']]
- - ['Front_end_stall_rate', ['STALL_FRONTEND', 'CPU_CYCLES']]
- ['Back_end_stall_rate', ['STALL_BACKEND', 'CPU_CYCLES']]
- - ['Speculatively_executed_IPC', ['INST_SPEC', 'CPU_CYCLES']]
- ['Architecturally_executed_IPC', ['INST_RETIRED', 'CPU_CYCLES']]
- - ['VFP_instruction_rate_per_instructions', ['VFP_SPEC', 'INST_SPEC']]
- ['DMB_rate_per_instructions', ['DMB_SPEC', 'INST_SPEC']]
- ['DP_instruction_rate_per_instructions', ['DP_SPEC', 'INST_SPEC']]
- ['ISB_rate_per_instructions', ['ISB_SPEC', 'INST_SPEC']]
- ['CRYPTO_instruction_rate_per_instructions', ['CRYPTO_SPEC', 'INST_SPEC']]
- ['PC_WRITE_instruction_rate_per_instructions', ['PC_WRITE_SPEC', 'INST_SPEC']]
- ['SIMD_instruction_rate_per_instructions', ['ASE_SPEC', 'INST_SPEC']]
- ['BR_IMMED_instruction_rate_per_instructions', ['BR_IMMED_SPEC', 'INST_SPEC']]
- ['ST_instruction_rate_per_instructions', ['ST_SPEC', 'INST_SPEC']]
- ['BR_RETURN_instruction_rate_per_instructions', ['BR_RETURN_SPEC', 'INST_SPEC']]
- ['DSB_rate_per_instructions', ['DSB_SPEC', 'INST_SPEC']]
- ['LD_instruction_rate_per_instructions', ['LD_SPEC', 'INST_SPEC']]
- ['BR_INDIRECT_instruction_rate_per_instructions', ['BR_INDIRECT_SPEC', 'INST_SPEC']]
- ['Exception_rate_per_instructions', ['EXC_TAKEN', 'INST_RETIRED']]
kpi_file_groups:
- ["bundle11.csv", "bundle12.csv"]
- ["bundle0.csv", "bundle1.csv", "bundle7.csv", "bundle10.csv"]
- ["bundle5.csv", "bundle6.csv", "bundle13.csv"]
- ["bundle4.csv"]
- ["bundle8.csv"]
- ["bundle8.csv", "bundle9.csv", "bundle14.csv"]
Run the Python application to create the performance plots as follows:
python3 Performance_Analysis_Backend/PMUv3_Backend/pmuv3_plotting.py -config config.yaml
Look in the test_plotting/
directory for a CSV file and the PDF files with the results.
The next section explains how to instrument multiple sections of code.