[PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.

Jing Zhang posted 5 patches 2 years, 1 month ago
There is a newer version of this series
[PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Posted by Jing Zhang 2 years, 1 month ago
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(+)

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",
+			.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 */
-- 
1.8.3.1
Re: [PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Posted by John Garry 2 years, 1 month ago
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 */
Re: [PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Posted by Jing Zhang 2 years, 1 month ago

在 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 */
Re: [PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Posted by John Garry 2 years, 1 month ago
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
Re: [PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Posted by Jing Zhang 2 years, 1 month ago

在 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
Re: [PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Posted by John Garry 2 years, 1 month ago
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
Re: [PATCH v5 3/5] perf test: Add pmu-event test for "Compat" and new event_field.
Posted by Jing Zhang 2 years, 1 month ago

在 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