[v5,3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Commit Message
Add new event test for uncore system event which is used to verify the
functionality of "Compat" matching multiple identifiers and the new event
fields "EventIdCode" and "Type".
Signed-off-by: Jing Zhang <renyu.zj@linux.alibaba.com>
---
.../pmu-events/arch/test/test_soc/sys/uncore.json | 8 ++++
tools/perf/tests/pmu-events.c | 55 ++++++++++++++++++++++
2 files changed, 63 insertions(+)
Comments
On 28/07/2023 07:17, Jing Zhang wrote:
> Add new event test for uncore system event which is used to verify the
> functionality of "Compat" matching multiple identifiers and the new event
> fields "EventIdCode" and "Type".
>
Thanks for doing this. It looks ok. I just have a comment, below.
> Signed-off-by: Jing Zhang <renyu.zj@linux.alibaba.com>
> ---
> .../pmu-events/arch/test/test_soc/sys/uncore.json | 8 ++++
> tools/perf/tests/pmu-events.c | 55 ++++++++++++++++++++++
> 2 files changed, 63 insertions(+)
>
> diff --git a/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json b/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json
> index c7e7528..879a0ae 100644
> --- a/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json
> +++ b/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json
> @@ -12,5 +12,13 @@
> "EventName": "sys_ccn_pmu.read_cycles",
> "Unit": "sys_ccn_pmu",
> "Compat": "0x01"
> + },
> + {
> + "BriefDescription": "Counts total cache misses in first lookup result (high priority).",
> + "Type": "0x05",
> + "EventIdCode": "0x01",
> + "EventName": "sys_cmn_pmu.hnf_cache_miss",
> + "Unit": "arm_cmn",
> + "Compat": "434*;436*;43c*;43a01"
> }
> ]
> diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c
> index 1dff863b..e227dcd 100644
> --- a/tools/perf/tests/pmu-events.c
> +++ b/tools/perf/tests/pmu-events.c
> @@ -255,9 +255,24 @@ struct perf_pmu_test_pmu {
> .matching_pmu = "uncore_sys_ccn_pmu",
> };
>
> +static const struct perf_pmu_test_event sys_cmn_pmu_hnf_cache_miss = {
> + .event = {
> + .name = "sys_cmn_pmu.hnf_cache_miss",
> + .event = "type=0x05,eventid=0x01",
> + .desc = "Counts total cache misses in first lookup result (high priority). Unit: uncore_arm_cmn ",
> + .topic = "uncore",
> + .pmu = "uncore_arm_cmn",
> + .compat = "434*;436*;43c*;43a01",
> + },
> + .alias_str = "type=0x5,eventid=0x1",
> + .alias_long_desc = "Counts total cache misses in first lookup result (high priority). Unit: uncore_arm_cmn ",
> + .matching_pmu = "uncore_arm_cmn_0",
> +};
> +
> static const struct perf_pmu_test_event *sys_events[] = {
> &sys_ddr_pmu_write_cycles,
> &sys_ccn_pmu_read_cycles,
> + &sys_cmn_pmu_hnf_cache_miss,
> NULL
> };
>
> @@ -699,6 +714,46 @@ static int __test_uncore_pmu_event_aliases(struct perf_pmu_test_pmu *test_pmu)
> &sys_ccn_pmu_read_cycles,
> },
> },
> + {
> + .pmu = {
> + .name = (char *)"uncore_arm_cmn_0",
> + .is_uncore = 1,
> + .id = (char *)"43401",
> + },
> + .aliases = {
> + &sys_cmn_pmu_hnf_cache_miss,
> + },
> + },
> + {
> + .pmu = {
> + .name = (char *)"uncore_arm_cmn_0",
> + .is_uncore = 1,
> + .id = (char *)"43602",
> + },
> + .aliases = {
> + &sys_cmn_pmu_hnf_cache_miss,
> + },
> + },
> + {
> + .pmu = {
> + .name = (char *)"uncore_arm_cmn_1",
Shouldn't this match some perf_pmu_test_event entry with same
matching_pmu member? But is perf_pmu_test_event.matching_pmu member ever
used for any checking???
Thanks,
John
> + .is_uncore = 1,
> + .id = (char *)"43c03",
> + },
> + .aliases = {
> + &sys_cmn_pmu_hnf_cache_miss,
> + },
> + },
> + {
> + .pmu = {
> + .name = (char *)"uncore_arm_cmn_1",
> + .is_uncore = 1,
> + .id = (char *)"43a01",
> + },
> + .aliases = {
> + &sys_cmn_pmu_hnf_cache_miss,
> + },
> + }
> };
>
> /* Test that aliases generated are as expected */
在 2023/7/28 下午4:30, John Garry 写道:
> On 28/07/2023 07:17, Jing Zhang wrote:
>> Add new event test for uncore system event which is used to verify the
>> functionality of "Compat" matching multiple identifiers and the new event
>> fields "EventIdCode" and "Type".
>>
>
> Thanks for doing this. It looks ok. I just have a comment, below.
>
Thanks.
>> Signed-off-by: Jing Zhang <renyu.zj@linux.alibaba.com>
>> ---
>> .../pmu-events/arch/test/test_soc/sys/uncore.json | 8 ++++
>> tools/perf/tests/pmu-events.c | 55 ++++++++++++++++++++++
>> 2 files changed, 63 insertions(+)
>>
>> diff --git a/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json b/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json
>> index c7e7528..879a0ae 100644
>> --- a/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json
>> +++ b/tools/perf/pmu-events/arch/test/test_soc/sys/uncore.json
>> @@ -12,5 +12,13 @@
>> "EventName": "sys_ccn_pmu.read_cycles",
>> "Unit": "sys_ccn_pmu",
>> "Compat": "0x01"
>> + },
>> + {
>> + "BriefDescription": "Counts total cache misses in first lookup result (high priority).",
>> + "Type": "0x05",
>> + "EventIdCode": "0x01",
>> + "EventName": "sys_cmn_pmu.hnf_cache_miss",
>> + "Unit": "arm_cmn",
>> + "Compat": "434*;436*;43c*;43a01"
>> }
>> ]
>> diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c
>> index 1dff863b..e227dcd 100644
>> --- a/tools/perf/tests/pmu-events.c
>> +++ b/tools/perf/tests/pmu-events.c
>> @@ -255,9 +255,24 @@ struct perf_pmu_test_pmu {
>> .matching_pmu = "uncore_sys_ccn_pmu",
>> };
>> +static const struct perf_pmu_test_event sys_cmn_pmu_hnf_cache_miss = {
>> + .event = {
>> + .name = "sys_cmn_pmu.hnf_cache_miss",
>> + .event = "type=0x05,eventid=0x01",
>> + .desc = "Counts total cache misses in first lookup result (high priority). Unit: uncore_arm_cmn ",
>> + .topic = "uncore",
>> + .pmu = "uncore_arm_cmn",
>> + .compat = "434*;436*;43c*;43a01",
>> + },
>> + .alias_str = "type=0x5,eventid=0x1",
>> + .alias_long_desc = "Counts total cache misses in first lookup result (high priority). Unit: uncore_arm_cmn ",
>> + .matching_pmu = "uncore_arm_cmn_0",
>> +};
>> +
>> static const struct perf_pmu_test_event *sys_events[] = {
>> &sys_ddr_pmu_write_cycles,
>> &sys_ccn_pmu_read_cycles,
>> + &sys_cmn_pmu_hnf_cache_miss,
>> NULL
>> };
>> @@ -699,6 +714,46 @@ static int __test_uncore_pmu_event_aliases(struct perf_pmu_test_pmu *test_pmu)
>> &sys_ccn_pmu_read_cycles,
>> },
>> },
>> + {
>> + .pmu = {
>> + .name = (char *)"uncore_arm_cmn_0",
>> + .is_uncore = 1,
>> + .id = (char *)"43401",
>> + },
>> + .aliases = {
>> + &sys_cmn_pmu_hnf_cache_miss,
>> + },
>> + },
>> + {
>> + .pmu = {
>> + .name = (char *)"uncore_arm_cmn_0",
>> + .is_uncore = 1,
>> + .id = (char *)"43602",
>> + },
>> + .aliases = {
>> + &sys_cmn_pmu_hnf_cache_miss,
>> + },
>> + },
>> + {
>> + .pmu = {
>> + .name = (char *)"uncore_arm_cmn_1",
>
> Shouldn't this match some perf_pmu_test_event entry with same matching_pmu member? But is perf_pmu_test_event.matching_pmu member ever used for any checking???
>
I need to double check because I was testing against 6.3-rc2.
Thanks,
Jing
> Thanks,
> John
>
>> + .is_uncore = 1,
>> + .id = (char *)"43c03",
>> + },
>> + .aliases = {
>> + &sys_cmn_pmu_hnf_cache_miss,
>> + },
>> + },
>> + {
>> + .pmu = {
>> + .name = (char *)"uncore_arm_cmn_1",
>> + .is_uncore = 1,
>> + .id = (char *)"43a01",
>> + },
>> + .aliases = {
>> + &sys_cmn_pmu_hnf_cache_miss,
>> + },
>> + }
>> };
>> /* Test that aliases generated are as expected */
On 31/07/2023 13:30, Jing Zhang wrote:
>>> + .pmu = {
>>> + .name = (char *)"uncore_arm_cmn_0",
>>> + .is_uncore = 1,
>>> + .id = (char *)"43602",
>>> + },
>>> + .aliases = {
>>> + &sys_cmn_pmu_hnf_cache_miss,
>>> + },
>>> + },
>>> + {
>>> + .pmu = {
>>> + .name = (char *)"uncore_arm_cmn_1",
>> Shouldn't this match some perf_pmu_test_event entry with same matching_pmu member? But is perf_pmu_test_event.matching_pmu member ever used for any checking???
>>
> I need to double check because I was testing against 6.3-rc2.
That 6.3-rc2, was for the the kernel? Or baseline for this series? See
see maintainers for git/branch to base perf tool dev on.
Thanks,
John
在 2023/7/31 下午9:12, John Garry 写道:
> On 31/07/2023 13:30, Jing Zhang wrote:
>>>> + .pmu = {
>>>> + .name = (char *)"uncore_arm_cmn_0",
>>>> + .is_uncore = 1,
>>>> + .id = (char *)"43602",
>>>> + },
>>>> + .aliases = {
>>>> + &sys_cmn_pmu_hnf_cache_miss,
>>>> + },
>>>> + },
>>>> + {
>>>> + .pmu = {
>>>> + .name = (char *)"uncore_arm_cmn_1",
>>> Shouldn't this match some perf_pmu_test_event entry with same matching_pmu member? But is perf_pmu_test_event.matching_pmu member ever used for any checking???
>>>
>> I need to double check because I was testing against 6.3-rc2.
>
> That 6.3-rc2, was for the the kernel? Or baseline for this series? See see maintainers for git/branch to base perf tool dev on.
>
I have now developed based on the latest perf tool, but I'm still confused.
"matching_pmu" does not seem to have any effect. No matter what value matching_pmu
is, it will not affect the final test result.
Thank,
Jing
On 01/08/2023 10:19, Jing Zhang wrote:
>>> I need to double check because I was testing against 6.3-rc2.
>> That 6.3-rc2, was for the the kernel? Or baseline for this series? See see maintainers for git/branch to base perf tool dev on.
>>
> I have now developed based on the latest perf tool, but I'm still confused.
> "matching_pmu" does not seem to have any effect. No matter what value matching_pmu
> is, it will not affect the final test result.
Yeah, that is what I was saying - matching_pmu is not used. Can you fix
that up (to be used), please?
Thanks,
John
在 2023/8/1 下午11:10, John Garry 写道:
> On 01/08/2023 10:19, Jing Zhang wrote:
>>>> I need to double check because I was testing against 6.3-rc2.
>>> That 6.3-rc2, was for the the kernel? Or baseline for this series? See see maintainers for git/branch to base perf tool dev on.
>>>
>> I have now developed based on the latest perf tool, but I'm still confused.
>> "matching_pmu" does not seem to have any effect. No matter what value matching_pmu
>> is, it will not affect the final test result.
>
> Yeah, that is what I was saying - matching_pmu is not used. Can you fix that up (to be used), please?
>
Ok, let me try :)
Thanks,
Jing
@@ -12,5 +12,13 @@
"EventName": "sys_ccn_pmu.read_cycles",
"Unit": "sys_ccn_pmu",
"Compat": "0x01"
+ },
+ {
+ "BriefDescription": "Counts total cache misses in first lookup result (high priority).",
+ "Type": "0x05",
+ "EventIdCode": "0x01",
+ "EventName": "sys_cmn_pmu.hnf_cache_miss",
+ "Unit": "arm_cmn",
+ "Compat": "434*;436*;43c*;43a01"
}
]
@@ -255,9 +255,24 @@ struct perf_pmu_test_pmu {
.matching_pmu = "uncore_sys_ccn_pmu",
};
+static const struct perf_pmu_test_event sys_cmn_pmu_hnf_cache_miss = {
+ .event = {
+ .name = "sys_cmn_pmu.hnf_cache_miss",
+ .event = "type=0x05,eventid=0x01",
+ .desc = "Counts total cache misses in first lookup result (high priority). Unit: uncore_arm_cmn ",
+ .topic = "uncore",
+ .pmu = "uncore_arm_cmn",
+ .compat = "434*;436*;43c*;43a01",
+ },
+ .alias_str = "type=0x5,eventid=0x1",
+ .alias_long_desc = "Counts total cache misses in first lookup result (high priority). Unit: uncore_arm_cmn ",
+ .matching_pmu = "uncore_arm_cmn_0",
+};
+
static const struct perf_pmu_test_event *sys_events[] = {
&sys_ddr_pmu_write_cycles,
&sys_ccn_pmu_read_cycles,
+ &sys_cmn_pmu_hnf_cache_miss,
NULL
};
@@ -699,6 +714,46 @@ static int __test_uncore_pmu_event_aliases(struct perf_pmu_test_pmu *test_pmu)
&sys_ccn_pmu_read_cycles,
},
},
+ {
+ .pmu = {
+ .name = (char *)"uncore_arm_cmn_0",
+ .is_uncore = 1,
+ .id = (char *)"43401",
+ },
+ .aliases = {
+ &sys_cmn_pmu_hnf_cache_miss,
+ },
+ },
+ {
+ .pmu = {
+ .name = (char *)"uncore_arm_cmn_0",
+ .is_uncore = 1,
+ .id = (char *)"43602",
+ },
+ .aliases = {
+ &sys_cmn_pmu_hnf_cache_miss,
+ },
+ },
+ {
+ .pmu = {
+ .name = (char *)"uncore_arm_cmn_1",
+ .is_uncore = 1,
+ .id = (char *)"43c03",
+ },
+ .aliases = {
+ &sys_cmn_pmu_hnf_cache_miss,
+ },
+ },
+ {
+ .pmu = {
+ .name = (char *)"uncore_arm_cmn_1",
+ .is_uncore = 1,
+ .id = (char *)"43a01",
+ },
+ .aliases = {
+ &sys_cmn_pmu_hnf_cache_miss,
+ },
+ }
};
/* Test that aliases generated are as expected */