€•vbŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ2/translations/zh_CN/admin-guide/perf/hisi-pcie-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/zh_TW/admin-guide/perf/hisi-pcie-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/it_IT/admin-guide/perf/hisi-pcie-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/ja_JP/admin-guide/perf/hisi-pcie-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/ko_KR/admin-guide/perf/hisi-pcie-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/sp_SP/admin-guide/perf/hisi-pcie-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ0HiSilicon PCIe Performance Monitoring Unit (PMU)”h]”hŒ0HiSilicon PCIe Performance Monitoring Unit (PMU)”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒL/var/lib/git/docbuild/linux/Documentation/admin-guide/perf/hisi-pcie-pmu.rst”h KubhŒ paragraph”“”)”}”(hŒOn Hip09, HiSilicon PCIe Performance Monitoring Unit (PMU) could monitor bandwidth, latency, bus utilization and buffer occupancy data of PCIe.”h]”hŒOn Hip09, HiSilicon PCIe Performance Monitoring Unit (PMU) could monitor bandwidth, latency, bus utilization and buffer occupancy data of PCIe.”…””}”(hh¹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¸)”}”(hŒuEach PCIe Core has a PMU to monitor multi Root Ports of this PCIe Core and all Endpoints downstream these Root Ports.”h]”hŒuEach PCIe Core has a PMU to monitor multi Root Ports of this PCIe Core and all Endpoints downstream these Root Ports.”…””}”(hhÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¢)”}”(hhh]”(h§)”}”(hŒHiSilicon PCIe PMU driver”h]”hŒHiSilicon PCIe PMU driver”…””}”(hhØhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhÕhžhhŸh¶h K ubh¸)”}”(hŒYThe PCIe PMU driver registers a perf PMU with the name of its sicl-id and PCIe Core id.::”h]”hŒXThe PCIe PMU driver registers a perf PMU with the name of its sicl-id and PCIe Core id.:”…””}”(hhæhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÕhžhubhŒ literal_block”“”)”}”(hŒ0/sys/bus/event_source/hisi_pcie_core”h]”hŒ0/sys/bus/event_source/hisi_pcie_core”…””}”hhösbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hôhŸh¶h KhhÕhžhubh¸)”}”(hŒŽPMU driver provides description of available events and filter options in sysfs, see /sys/bus/event_source/devices/hisi_pcie_core.”h]”hŒŽPMU driver provides description of available events and filter options in sysfs, see /sys/bus/event_source/devices/hisi_pcie_core.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÕhžhubh¸)”}”(hŒÔThe "format" directory describes all formats of the config (events) and config1 (filter options) fields of the perf_event_attr structure. The "events" directory describes all documented events shown in perf list.”h]”hŒÜThe “format†directory describes all formats of the config (events) and config1 (filter options) fields of the perf_event_attr structure. The “events†directory describes all documented events shown in perf list.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÕhžhubh¸)”}”(hŒ\The "identifier" sysfs file allows users to identify the version of the PMU hardware device.”h]”hŒ`The “identifier†sysfs file allows users to identify the version of the PMU hardware device.”…””}”(hj"hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÕhžhubh¸)”}”(hŒØThe "bus" sysfs file allows users to get the bus number of Root Ports monitored by PMU. Furthermore users can get the Root Ports range in [bdf_min, bdf_max] from "bdf_min" and "bdf_max" sysfs attributes respectively.”h]”hŒäThe “bus†sysfs file allows users to get the bus number of Root Ports monitored by PMU. Furthermore users can get the Root Ports range in [bdf_min, bdf_max] from “bdf_min†and “bdf_max†sysfs attributes respectively.”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhÕhžhubh¸)”}”(hŒExample usage of perf::”h]”hŒExample usage of perf:”…””}”(hj>hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K#hhÕhžhubhõ)”}”(hX$# perf list hisi_pcie0_core0/rx_mwr_latency/ [kernel PMU event] hisi_pcie0_core0/rx_mwr_cnt/ [kernel PMU event] ------------------------------------------ $# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0xffff/ $# perf stat -e hisi_pcie0_core0/rx_mwr_cnt,port=0xffff/”h]”hX$# perf list hisi_pcie0_core0/rx_mwr_latency/ [kernel PMU event] hisi_pcie0_core0/rx_mwr_cnt/ [kernel PMU event] ------------------------------------------ $# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0xffff/ $# perf stat -e hisi_pcie0_core0/rx_mwr_cnt,port=0xffff/”…””}”hjLsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1hôhŸh¶h K%hhÕhžhubh¸)”}”(hXThe related events usually used to calculate the bandwidth, latency or others. They need to start and end counting at the same time, therefore related events are best used in the same event group to get the expected value. There are two ways to know if they are related events:”h]”hXThe related events usually used to calculate the bandwidth, latency or others. They need to start and end counting at the same time, therefore related events are best used in the same event group to get the expected value. There are two ways to know if they are related events:”…””}”(hjZhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K-hhÕhžhubhŒenumerated_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒjBy event name, such as the latency events "xxx_latency, xxx_cnt" or bandwidth events "xxx_flux, xxx_time".”h]”h¸)”}”(hŒjBy event name, such as the latency events "xxx_latency, xxx_cnt" or bandwidth events "xxx_flux, xxx_time".”h]”hŒrBy event name, such as the latency events “xxx_latency, xxx_cnt†or bandwidth events “xxx_flux, xxx_timeâ€.”…””}”(hjshžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K2hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjjhžhhŸh¶h Nubjn)”}”(hŒ6By event type, such as "event=0xXXXX, event=0x1XXXX". ”h]”h¸)”}”(hŒ5By event type, such as "event=0xXXXX, event=0x1XXXX".”h]”hŒ9By event type, such as “event=0xXXXX, event=0x1XXXXâ€.”…””}”(hj‹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K4hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjjhžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œ loweralpha”Œprefix”hŒsuffix”Œ)”uh1jhhhÕhžhhŸh¶h K2ubh¸)”}”(hŒExample usage of perf group::”h]”hŒExample usage of perf group:”…””}”(hjªhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K6hhÕhžhubhõ)”}”(hŒi$# perf stat -e "{hisi_pcie0_core0/rx_mwr_latency,port=0xffff/,hisi_pcie0_core0/rx_mwr_cnt,port=0xffff/}"”h]”hŒi$# perf stat -e "{hisi_pcie0_core0/rx_mwr_latency,port=0xffff/,hisi_pcie0_core0/rx_mwr_cnt,port=0xffff/}"”…””}”hj¸sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1hôhŸh¶h K8hhÕhžhubh¸)”}”(hŒThe current driver does not support sampling. So "perf record" is unsupported. Also attach to a task is unsupported for PCIe PMU.”h]”hŒ…The current driver does not support sampling. So “perf record†is unsupported. Also attach to a task is unsupported for PCIe PMU.”…””}”(hjÆhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K:hhÕhžhubh¢)”}”(hhh]”(h§)”}”(hŒFilter options”h]”hŒFilter options”…””}”(hj×hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjÔhžhhŸh¶h K>ubji)”}”(hhh]”(jn)”}”(hXµTarget filter PMU could only monitor the performance of traffic downstream target Root Ports or downstream target Endpoint. PCIe PMU driver support "port" and "bdf" interfaces for users. Please notice that, one of these two interfaces must be set, and these two interfaces aren't supported at the same time. If they are both set, only "port" filter is valid. If "port" filter not being set or is set explicitly to zero (default), the "bdf" filter will be in effect, because "bdf=0" meaning 0000:000:00.0. - port "port" filter can be used in all PCIe PMU events, target Root Port can be selected by configuring the 16-bits-bitmap "port". Multi ports can be selected for AP-layer-events, and only one port can be selected for TL/DL-layer-events. For example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of bitmap should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4 lanes), bit8 is set, port=0x100; if these two Root Ports are both monitored, port=0x101. Example usage of perf:: $# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0x1/ sleep 5 - bdf "bdf" filter can only be used in bandwidth events, target Endpoint is selected by configuring BDF to "bdf". Counter only counts the bandwidth of message requested by target Endpoint. For example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0. Example usage of perf:: $# perf stat -e hisi_pcie0_core0/rx_mrd_flux,bdf=0x3900/ sleep 5 ”h]”(h¸)”}”(hŒ Target filter”h]”hŒ Target filter”…””}”(hjìhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K@hjèubh¸)”}”(hXêPMU could only monitor the performance of traffic downstream target Root Ports or downstream target Endpoint. PCIe PMU driver support "port" and "bdf" interfaces for users. Please notice that, one of these two interfaces must be set, and these two interfaces aren't supported at the same time. If they are both set, only "port" filter is valid. If "port" filter not being set or is set explicitly to zero (default), the "bdf" filter will be in effect, because "bdf=0" meaning 0000:000:00.0.”h]”hXPMU could only monitor the performance of traffic downstream target Root Ports or downstream target Endpoint. PCIe PMU driver support “port†and “bdf†interfaces for users. Please notice that, one of these two interfaces must be set, and these two interfaces aren’t supported at the same time. If they are both set, only “port†filter is valid. If “port†filter not being set or is set explicitly to zero (default), the “bdf†filter will be in effect, because “bdf=0†meaning 0000:000:00.0.”…””}”(hjúhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KBhjèubhŒ bullet_list”“”)”}”(hhh]”(jn)”}”(hX3port "port" filter can be used in all PCIe PMU events, target Root Port can be selected by configuring the 16-bits-bitmap "port". Multi ports can be selected for AP-layer-events, and only one port can be selected for TL/DL-layer-events. For example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of bitmap should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4 lanes), bit8 is set, port=0x100; if these two Root Ports are both monitored, port=0x101. Example usage of perf:: $# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0x1/ sleep 5 ”h]”(h¸)”}”(hŒport”h]”hŒport”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KKhj ubh¸)”}”(hŒç"port" filter can be used in all PCIe PMU events, target Root Port can be selected by configuring the 16-bits-bitmap "port". Multi ports can be selected for AP-layer-events, and only one port can be selected for TL/DL-layer-events.”h]”hŒï“port†filter can be used in all PCIe PMU events, target Root Port can be selected by configuring the 16-bits-bitmap “portâ€. Multi ports can be selected for AP-layer-events, and only one port can be selected for TL/DL-layer-events.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KMhj ubh¸)”}”(hŒåFor example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of bitmap should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4 lanes), bit8 is set, port=0x100; if these two Root Ports are both monitored, port=0x101.”h]”hŒåFor example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of bitmap should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4 lanes), bit8 is set, port=0x100; if these two Root Ports are both monitored, port=0x101.”…””}”(hj-hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KRhj ubh¸)”}”(hŒExample usage of perf::”h]”hŒExample usage of perf:”…””}”(hj;hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KWhj ubhõ)”}”(hŒA$# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0x1/ sleep 5”h]”hŒA$# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0x1/ sleep 5”…””}”hjIsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1hôhŸh¶h KYhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj ubjn)”}”(hXbbdf "bdf" filter can only be used in bandwidth events, target Endpoint is selected by configuring BDF to "bdf". Counter only counts the bandwidth of message requested by target Endpoint. For example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0. Example usage of perf:: $# perf stat -e hisi_pcie0_core0/rx_mrd_flux,bdf=0x3900/ sleep 5 ”h]”(h¸)”}”(hŒbdf”h]”hŒbdf”…””}”(hjahžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K[hj]ubh¸)”}”(hŒ¶"bdf" filter can only be used in bandwidth events, target Endpoint is selected by configuring BDF to "bdf". Counter only counts the bandwidth of message requested by target Endpoint.”h]”hŒ¾â€œbdf†filter can only be used in bandwidth events, target Endpoint is selected by configuring BDF to “bdfâ€. Counter only counts the bandwidth of message requested by target Endpoint.”…””}”(hjohžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K]hj]ubh¸)”}”(hŒGFor example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0.”h]”hŒKFor example, “bdf=0x3900†means BDF of target Endpoint is 0000:39:00.0.”…””}”(hj}hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kahj]ubh¸)”}”(hŒExample usage of perf::”h]”hŒExample usage of perf:”…””}”(hj‹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kchj]ubhõ)”}”(hŒ@$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,bdf=0x3900/ sleep 5”h]”hŒ@$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,bdf=0x3900/ sleep 5”…””}”hj™sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1hôhŸh¶h Kehj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jhŸh¶h KKhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjåhžhhŸNh Nubjn)”}”(hXCTrigger filter Event statistics start when the first time TLP length is greater/smaller than trigger condition. You can set the trigger condition by writing "trig_len", and set the trigger mode by writing "trig_mode". This filter can only be used in bandwidth events. For example, "trig_len=4" means trigger condition is 2^4 DW, "trig_mode=0" means statistics start when TLP length > trigger condition, "trig_mode=1" means start when TLP length < condition. Example usage of perf:: $# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,trig_len=0x4,trig_mode=1/ sleep 5 ”h]”(h¸)”}”(hŒTrigger filter”h]”hŒTrigger filter”…””}”(hj¿hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kghj»ubh¸)”}”(hŒüEvent statistics start when the first time TLP length is greater/smaller than trigger condition. You can set the trigger condition by writing "trig_len", and set the trigger mode by writing "trig_mode". This filter can only be used in bandwidth events.”h]”hXEvent statistics start when the first time TLP length is greater/smaller than trigger condition. You can set the trigger condition by writing “trig_lenâ€, and set the trigger mode by writing “trig_modeâ€. This filter can only be used in bandwidth events.”…””}”(hjÍhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kihj»ubh¸)”}”(hŒ½For example, "trig_len=4" means trigger condition is 2^4 DW, "trig_mode=0" means statistics start when TLP length > trigger condition, "trig_mode=1" means start when TLP length < condition.”h]”hŒÉFor example, “trig_len=4†means trigger condition is 2^4 DW, “trig_mode=0†means statistics start when TLP length > trigger condition, “trig_mode=1†means start when TLP length < condition.”…””}”(hjÛhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Knhj»ubh¸)”}”(hŒExample usage of perf::”h]”hŒExample usage of perf:”…””}”(hjéhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Krhj»ubhõ)”}”(hŒZ$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,trig_len=0x4,trig_mode=1/ sleep 5”h]”hŒZ$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,trig_len=0x4,trig_mode=1/ sleep 5”…””}”hj÷sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1hôhŸh¶h Kthj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjåhžhhŸh¶h Nubjn)”}”(hXThreshold filter Counter counts when TLP length within the specified range. You can set the threshold by writing "thr_len", and set the threshold mode by writing "thr_mode". This filter can only be used in bandwidth events. For example, "thr_len=4" means threshold is 2^4 DW, "thr_mode=0" means counter counts when TLP length >= threshold, and "thr_mode=1" means counts when TLP length < threshold. Example usage of perf:: $# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,thr_len=0x4,thr_mode=1/ sleep 5 ”h]”(h¸)”}”(hŒThreshold filter”h]”hŒThreshold filter”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kvhj ubh¸)”}”(hŒÎCounter counts when TLP length within the specified range. You can set the threshold by writing "thr_len", and set the threshold mode by writing "thr_mode". This filter can only be used in bandwidth events.”h]”hŒÖCounter counts when TLP length within the specified range. You can set the threshold by writing “thr_lenâ€, and set the threshold mode by writing “thr_modeâ€. This filter can only be used in bandwidth events.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kxhj ubh¸)”}”(hŒ®For example, "thr_len=4" means threshold is 2^4 DW, "thr_mode=0" means counter counts when TLP length >= threshold, and "thr_mode=1" means counts when TLP length < threshold.”h]”hŒºFor example, “thr_len=4†means threshold is 2^4 DW, “thr_mode=0†means counter counts when TLP length >= threshold, and “thr_mode=1†means counts when TLP length < threshold.”…””}”(hj+hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K|hj ubh¸)”}”(hŒExample usage of perf::”h]”hŒExample usage of perf:”…””}”(hj9hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K€hj ubhõ)”}”(hŒX$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,thr_len=0x4,thr_mode=1/ sleep 5”h]”hŒX$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,thr_len=0x4,thr_mode=1/ sleep 5”…””}”hjGsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1hôhŸh¶h K‚hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjåhžhhŸh¶h Nubjn)”}”(hX‰TLP Length filter When counting bandwidth, the data can be composed of certain parts of TLP packets. You can specify it through "len_mode": - 2'b00: Reserved (Do not use this since the behaviour is undefined) - 2'b01: Bandwidth of TLP payloads - 2'b10: Bandwidth of TLP headers - 2'b11: Bandwidth of both TLP payloads and headers For example, "len_mode=2" means only counting the bandwidth of TLP headers and "len_mode=3" means the final bandwidth data is composed of both TLP headers and payloads. Default value if not specified is 2'b11. Example usage of perf:: $# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,len_mode=0x1/ sleep 5”h]”(h¸)”}”(hŒTLP Length filter”h]”hŒTLP Length filter”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K„hj[ubh¸)”}”(hŒyWhen counting bandwidth, the data can be composed of certain parts of TLP packets. You can specify it through "len_mode":”h]”hŒ}When counting bandwidth, the data can be composed of certain parts of TLP packets. You can specify it through “len_modeâ€:”…””}”(hjmhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K†hj[ubj )”}”(hhh]”(jn)”}”(hŒB2'b00: Reserved (Do not use this since the behaviour is undefined)”h]”h¸)”}”(hj€h]”hŒD2’b00: Reserved (Do not use this since the behaviour is undefined)”…””}”(hj‚hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K‰hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj{ubjn)”}”(hŒ 2'b01: Bandwidth of TLP payloads”h]”h¸)”}”(hj—h]”hŒ"2’b01: Bandwidth of TLP payloads”…””}”(hj™hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KŠhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj{ubjn)”}”(hŒ2'b10: Bandwidth of TLP headers”h]”h¸)”}”(hj®h]”hŒ!2’b10: Bandwidth of TLP headers”…””}”(hj°hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K‹hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj{ubjn)”}”(hŒ22'b11: Bandwidth of both TLP payloads and headers ”h]”h¸)”}”(hŒ12'b11: Bandwidth of both TLP payloads and headers”h]”hŒ32’b11: Bandwidth of both TLP payloads and headers”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KŒhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj{ubeh}”(h]”h ]”h"]”h$]”h&]”j³j´uh1jhŸh¶h K‰hj[ubh¸)”}”(hŒÑFor example, "len_mode=2" means only counting the bandwidth of TLP headers and "len_mode=3" means the final bandwidth data is composed of both TLP headers and payloads. Default value if not specified is 2'b11.”h]”hŒÛFor example, “len_mode=2†means only counting the bandwidth of TLP headers and “len_mode=3†means the final bandwidth data is composed of both TLP headers and payloads. Default value if not specified is 2’b11.”…””}”(hjáhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KŽhj[ubh¸)”}”(hŒExample usage of perf::”h]”hŒExample usage of perf:”…””}”(hjïhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K’hj[ubhõ)”}”(hŒN$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,len_mode=0x1/ sleep 5”h]”hŒN$# perf stat -e hisi_pcie0_core0/rx_mrd_flux,port=0xffff,len_mode=0x1/ sleep 5”…””}”hjýsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1hôhŸh¶h K”hj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jmhjåhžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”j¥Œarabic”j§hj¨Œ.”uh1jhhjÔhžhhŸh¶h K@ubeh}”(h]”Œfilter-options”ah ]”h"]”Œfilter options”ah$]”h&]”uh1h¡hhÕhžhhŸh¶h K>ubeh}”(h]”Œhisilicon-pcie-pmu-driver”ah ]”h"]”Œhisilicon pcie pmu driver”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K ubeh}”(h]”Œ.hisilicon-pcie-performance-monitoring-unit-pmu”ah ]”h"]”Œ0hisilicon pcie performance monitoring unit (pmu)”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jTŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j.j+j&j#jjuŒ nametypes”}”(j.‰j&‰j‰uh}”(j+h£j#hÕjjÔuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.