@@ -15,10 +15,10 @@ HiSilicon PCIe PMU driver
15
15
The PCIe PMU driver registers a perf PMU with the name of its sicl-id and PCIe
16
16
Core id.::
17
17
18
- /sys/bus/event_source/hisi_pcie<sicl>_ <core>
18
+ /sys/bus/event_source/hisi_pcie<sicl>_core <core>
19
19
20
20
PMU driver provides description of available events and filter options in sysfs,
21
- see /sys/bus/event_source/devices/hisi_pcie<sicl>_ <core>.
21
+ see /sys/bus/event_source/devices/hisi_pcie<sicl>_core <core>.
22
22
23
23
The "format" directory describes all formats of the config (events) and config1
24
24
(filter options) fields of the perf_event_attr structure. The "events" directory
@@ -33,13 +33,13 @@ monitored by PMU.
33
33
Example usage of perf::
34
34
35
35
$# perf list
36
- hisi_pcie0_0 /rx_mwr_latency/ [kernel PMU event]
37
- hisi_pcie0_0 /rx_mwr_cnt/ [kernel PMU event]
36
+ hisi_pcie0_core0 /rx_mwr_latency/ [kernel PMU event]
37
+ hisi_pcie0_core0 /rx_mwr_cnt/ [kernel PMU event]
38
38
------------------------------------------
39
39
40
- $# perf stat -e hisi_pcie0_0 /rx_mwr_latency/
41
- $# perf stat -e hisi_pcie0_0 /rx_mwr_cnt/
42
- $# perf stat -g -e hisi_pcie0_0 /rx_mwr_latency/ -e hisi_pcie0_0 /rx_mwr_cnt/
40
+ $# perf stat -e hisi_pcie0_core0 /rx_mwr_latency/
41
+ $# perf stat -e hisi_pcie0_core0 /rx_mwr_cnt/
42
+ $# perf stat -g -e hisi_pcie0_core0 /rx_mwr_latency/ -e hisi_pcie0_core0 /rx_mwr_cnt/
43
43
44
44
The current driver does not support sampling. So "perf record" is unsupported.
45
45
Also attach to a task is unsupported for PCIe PMU.
@@ -48,59 +48,83 @@ Filter options
48
48
--------------
49
49
50
50
1. Target filter
51
- PMU could only monitor the performance of traffic downstream target Root Ports
52
- or downstream target Endpoint. PCIe PMU driver support "port" and "bdf"
53
- interfaces for users, and these two interfaces aren't supported at the same
54
- time.
55
51
56
- -port
57
- "port" filter can be used in all PCIe PMU events, target Root Port can be
58
- selected by configuring the 16-bits-bitmap "port". Multi ports can be selected
59
- for AP-layer-events, and only one port can be selected for TL/DL-layer-events .
52
+ PMU could only monitor the performance of traffic downstream target Root
53
+ Ports or downstream target Endpoint. PCIe PMU driver support "port" and
54
+ "bdf" interfaces for users, and these two interfaces aren't supported at the
55
+ same time .
60
56
61
- For example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of bitmap
62
- should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4 lanes),
63
- bit8 is set, port=0x100; if these two Root Ports are both monitored, port=0x101.
57
+ - port
64
58
65
- Example usage of perf::
59
+ "port" filter can be used in all PCIe PMU events, target Root Port can be
60
+ selected by configuring the 16-bits-bitmap "port". Multi ports can be
61
+ selected for AP-layer-events, and only one port can be selected for
62
+ TL/DL-layer-events.
66
63
67
- $# perf stat -e hisi_pcie0_0/rx_mwr_latency,port=0x1/ sleep 5
64
+ For example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of
65
+ bitmap should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4
66
+ lanes), bit8 is set, port=0x100; if these two Root Ports are both
67
+ monitored, port=0x101.
68
68
69
- -bdf
69
+ Example usage of perf::
70
70
71
- "bdf" filter can only be used in bandwidth events, target Endpoint is selected
72
- by configuring BDF to "bdf". Counter only counts the bandwidth of message
73
- requested by target Endpoint.
71
+ $# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0x1/ sleep 5
74
72
75
- For example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0.
73
+ - bdf
76
74
77
- Example usage of perf::
75
+ "bdf" filter can only be used in bandwidth events, target Endpoint is
76
+ selected by configuring BDF to "bdf". Counter only counts the bandwidth of
77
+ message requested by target Endpoint.
78
+
79
+ For example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0.
80
+
81
+ Example usage of perf::
78
82
79
- $# perf stat -e hisi_pcie0_0 /rx_mrd_flux,bdf=0x3900/ sleep 5
83
+ $# perf stat -e hisi_pcie0_core0 /rx_mrd_flux,bdf=0x3900/ sleep 5
80
84
81
85
2. Trigger filter
82
- Event statistics start when the first time TLP length is greater/smaller
83
- than trigger condition. You can set the trigger condition by writing "trig_len",
84
- and set the trigger mode by writing "trig_mode". This filter can only be used
85
- in bandwidth events.
86
86
87
- For example, "trig_len=4" means trigger condition is 2^4 DW, "trig_mode=0"
88
- means statistics start when TLP length > trigger condition, "trig_mode=1"
89
- means start when TLP length < condition.
87
+ Event statistics start when the first time TLP length is greater/smaller
88
+ than trigger condition. You can set the trigger condition by writing
89
+ "trig_len", and set the trigger mode by writing "trig_mode". This filter can
90
+ only be used in bandwidth events.
90
91
91
- Example usage of perf::
92
+ For example, "trig_len=4" means trigger condition is 2^4 DW, "trig_mode=0"
93
+ means statistics start when TLP length > trigger condition, "trig_mode=1"
94
+ means start when TLP length < condition.
95
+
96
+ Example usage of perf::
92
97
93
- $# perf stat -e hisi_pcie0_0 /rx_mrd_flux,trig_len=0x4,trig_mode=1/ sleep 5
98
+ $# perf stat -e hisi_pcie0_core0 /rx_mrd_flux,trig_len=0x4,trig_mode=1/ sleep 5
94
99
95
100
3. Threshold filter
96
- Counter counts when TLP length within the specified range. You can set the
97
- threshold by writing "thr_len", and set the threshold mode by writing
98
- "thr_mode". This filter can only be used in bandwidth events.
99
101
100
- For example, "thr_len=4" means threshold is 2^4 DW, "thr_mode=0" means
101
- counter counts when TLP length >= threshold , and "thr_mode=1" means counts
102
- when TLP length < threshold .
102
+ Counter counts when TLP length within the specified range. You can set the
103
+ threshold by writing "thr_len" , and set the threshold mode by writing
104
+ "thr_mode". This filter can only be used in bandwidth events .
103
105
104
- Example usage of perf::
106
+ For example, "thr_len=4" means threshold is 2^4 DW, "thr_mode=0" means
107
+ counter counts when TLP length >= threshold, and "thr_mode=1" means counts
108
+ when TLP length < threshold.
109
+
110
+ Example usage of perf::
111
+
112
+ $# perf stat -e hisi_pcie0_core0/rx_mrd_flux,thr_len=0x4,thr_mode=1/ sleep 5
113
+
114
+ 4. TLP Length filter
115
+
116
+ When counting bandwidth, the data can be composed of certain parts of TLP
117
+ packets. You can specify it through "len_mode":
118
+
119
+ - 2'b00: Reserved (Do not use this since the behaviour is undefined)
120
+ - 2'b01: Bandwidth of TLP payloads
121
+ - 2'b10: Bandwidth of TLP headers
122
+ - 2'b11: Bandwidth of both TLP payloads and headers
123
+
124
+ For example, "len_mode=2" means only counting the bandwidth of TLP headers
125
+ and "len_mode=3" means the final bandwidth data is composed of both TLP
126
+ headers and payloads. Default value if not specified is 2'b11.
127
+
128
+ Example usage of perf::
105
129
106
- $# perf stat -e hisi_pcie0_0 /rx_mrd_flux,thr_len=0x4,thr_mode=1 / sleep 5
130
+ $# perf stat -e hisi_pcie0_core0 /rx_mrd_flux,len_mode=0x1 / sleep 5
0 commit comments