| [ |
| { |
| "BriefDescription": "PCU clock ticks. Use to get percentages of PCU cycles events", |
| "Counter": "0,1,2,3", |
| "EventName": "UNC_P_CLOCKTICKS", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C0. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details", |
| "Counter": "0,1,2,3", |
| "EventCode": "0x80", |
| "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C0", |
| "Filter": "occ_sel=1", |
| "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C0 / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "power_state_occupancy.cores_c0 %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C3. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events and occupancy triggering to capture other details", |
| "Counter": "0,1,2,3", |
| "EventCode": "0x80", |
| "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C3", |
| "Filter": "occ_sel=2", |
| "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C3 / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "power_state_occupancy.cores_c3 %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "This is an occupancy event that tracks the number of cores that are in C6. It can be used by itself to get the average number of cores in C0, with threshholding to generate histograms, or with other PCU events ", |
| "Counter": "0,1,2,3", |
| "EventCode": "0x80", |
| "EventName": "UNC_P_POWER_STATE_OCCUPANCY.CORES_C6", |
| "Filter": "occ_sel=3", |
| "MetricExpr": "(UNC_P_POWER_STATE_OCCUPANCY.CORES_C6 / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "power_state_occupancy.cores_c6 %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "Counts the number of cycles that we are in external PROCHOT mode. This mode is triggered when a sensor off the die determines that something off-die (like DRAM) is too hot and must throttle to avoid damaging the chip", |
| "Counter": "0,1,2,3", |
| "EventCode": "0xA", |
| "EventName": "UNC_P_PROCHOT_EXTERNAL_CYCLES", |
| "MetricExpr": "(UNC_P_PROCHOT_EXTERNAL_CYCLES / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "prochot_external_cycles %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "Counts the number of cycles when temperature is the upper limit on frequency", |
| "Counter": "0,1,2,3", |
| "EventCode": "0x4", |
| "EventName": "UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES", |
| "MetricExpr": "(UNC_P_FREQ_MAX_LIMIT_THERMAL_CYCLES / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "freq_max_limit_thermal_cycles %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "Counts the number of cycles when the OS is the upper limit on frequency", |
| "Counter": "0,1,2,3", |
| "EventCode": "0x6", |
| "EventName": "UNC_P_FREQ_MAX_OS_CYCLES", |
| "MetricExpr": "(UNC_P_FREQ_MAX_OS_CYCLES / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "freq_max_os_cycles %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "Counts the number of cycles when power is the upper limit on frequency", |
| "Counter": "0,1,2,3", |
| "EventCode": "0x5", |
| "EventName": "UNC_P_FREQ_MAX_POWER_CYCLES", |
| "MetricExpr": "(UNC_P_FREQ_MAX_POWER_CYCLES / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "freq_max_power_cycles %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| }, |
| { |
| "BriefDescription": "Counts the number of cycles when current is the upper limit on frequency", |
| "Counter": "0,1,2,3", |
| "EventCode": "0x74", |
| "EventName": "UNC_P_FREQ_TRANS_CYCLES", |
| "MetricExpr": "(UNC_P_FREQ_TRANS_CYCLES / UNC_P_CLOCKTICKS) * 100.", |
| "MetricName": "freq_trans_cycles %", |
| "PerPkg": "1", |
| "Unit": "PCU" |
| } |
| ] |