[PATCH v2] perf stat: Enable iostat mode for HiSilicon PCIe PMU
Yicong Yang
yangyicong at huawei.com
Wed Feb 21 00:16:30 PST 2024
On 2024/2/8 18:46, Jonathan Cameron wrote:
> On Thu, 8 Feb 2024 11:25:18 +0800
> Yicong Yang <yangyicong at huawei.com> wrote:
>
>> From: Yicong Yang <yangyicong at hisilicon.com>
>>
>> Some HiSilicon platforms provide PCIe PMU devices for monitoring the
>> throughput and latency of PCIe traffic. With the support of PCIe PMU
>> we can enable the perf iostat mode.
>>
>> The HiSilicon PCIe PMU can support measuring the throughput of certain
>> TLP types and of certain root port. Totally 6 metrics are provided in
>> the unit of MB:
>>
>> - Inbound MWR: The memory write TLPs from the devices downstream the root port
>> - Inbound MRD: The memory read TLPs from the devices downstream the root port
>> - Inbound CPL: The completion TLPs from the devices downstream the root port
>> - Outbound MWR: The memory write TLPs from the CPU to the downstream devices
>> - Outbound MRD: The memory read TLPs from the CPU to the downstream devices
>> - Outbound CPL: The completions TLPs from the CPU to the downstream devices
>>
>> Since the PMU measures the throughput in DWords. So we need to calculate
>> the throughput in MB like:
>> Count * 4B / 1024 / 1024
>>
>> Some of the display of the `perf iostat` will be like:
>> [root at localhost tmp]# ./perf iostat list
>> hisi_pcie0_core2<0000:40:00.0>
>> hisi_pcie2_core2<0000:5f:00.0>
>> hisi_pcie0_core1<0000:16:00.0>
>> hisi_pcie0_core1<0000:16:04.0>
>> [root at localhost tmp]# ./perf iostat --timeout 10000
>>
>> Performance counter stats for 'system wide':
>>
>> port Inbound MWR(MB) Inbound MRD(MB) Inbound CPL(MB) Outbound MWR(MB) Outbound MRD(MB) Outbound CPL(MB)
>> 0000:40:00.0 0 0 0 0 0 0
>> 0000:5f:00.0 0 0 0 0 0 0
>> 0000:16:00.0 16272.99 366.58 0 15.09 0 16156.85
>> 0000:16:04.0 0 0 0 0 0 0
>>
>> 10.008227512 seconds time elapsed
>>
>> [root at localhost tmp]# ./perf iostat 0000:16:00.0 -- fio -name=read
>> -numjobs=30 -filename=/dev/nvme0n1 -rw=rw -iodepth=128 -direct=1 -sync=0
>> -norandommap -group_reporting -runtime=10 -time_based -bs=64k
>>
>> Performance counter stats for 'system wide':
>>
>> port Inbound MWR(MB) Inbound MRD(MB) Inbound CPL(MB) Outbound MWR(MB) Outbound MRD(MB) Outbound CPL(MB)
>> 0000:40:00.0 0 0 0 0 0 0
>> 0000:5f:00.0 0 0 0 0 0 0
>> 0000:16:00.0 16314.30 371.22 0 15.21 0 16362.20
>> 0000:16:04.0 0 0 0 0 0 0
>>
>> 10.168561767 seconds time elapsed
>>
>> 0.465373000 seconds user
>> 1.952948000 seconds sys
>>
>> More information of the HiSilicon PCIe PMU can be found at
>> Documentation/admin-guide/perf/hisi-pcie-pmu.rst.
>>
>> Signed-off-by: Yicong Yang <yangyicong at hisilicon.com>
>> ---
> If you are doing a v3 for any reason, one trivial comment inline.
>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron at huawei.com>
>
Thanks.
>> +
>> +enum hisi_iostat_metric_type {
>> + METRIC_IN_MWR, /* Inbound Memory Write */
>> + METRIC_IN_MRD, /* Inbound Memory Read */
>> + METRIC_IN_CPL, /* Inbound Memory Completion */
>> + METRIC_OUT_MWR, /* Outbound Memory Write */
>> + METRIC_OUT_MRD, /* Outbound Memory Read */
>> + METRIC_OUT_CPL, /* Outbound Memory Completion */
>> + METRIC_TYPE_MAX,
>
> Given it is the terminator, no comma needed.
>
Sure. Will drop the comma.
Thanks.
More information about the linux-arm-kernel
mailing list