← Documents Documentation/admin-guide/perf/mrvl-pem-pmu.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Performance

Marvell Odyssey PEM PMU

Odyssey PCIe PEM의 TLP, memory request, ATS event와 latency counter를 설명합니다.

Source pathDocumentation/admin-guide/perf/mrvl-pem-pmu.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

운영 요약

mrvl-pem-pmu.rst:1-56

PEM별 PMU에서 inbound/outbound TLP class, memory read, ATS operation과 각 latency를 별도 counter로 측정합니다.

관점핵심
UnitPCI Express Interface Unit (PEM)별 monitoring unit
방향Inbound와 outbound transaction
TLPPosted, non-posted, completion
MemoryRead request와 latency
ATSTranslation, Page Request, Invalidation과 latency
CounterTLP class와 ATS event에 별도 64-bit counters

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 =================================================================
2 Marvell Odyssey PEM Performance Monitoring Unit (PMU UNCORE)
3 =================================================================
4
5 The PCI Express Interface Units(PEM) are associated with a corresponding
6 monitoring unit. This includes performance counters to track various
7 characteristics of the data that is transmitted over the PCIe link.
8
9 The counters track inbound and outbound transactions which
10 includes separate counters for posted/non-posted/completion TLPs.
11 Also, inbound and outbound memory read requests along with their
12 latencies can also be monitored. Address Translation Services(ATS)events
13 such as ATS Translation, ATS Page Request, ATS Invalidation along with
14 their corresponding latencies are also tracked.
15
16 There are separate 64 bit counters to measure posted/non-posted/completion
17 tlps in inbound and outbound transactions. ATS events are measured by
18 different counters.
19
20 The PMU driver exposes the available events and format options under sysfs,
21 /sys/bus/event_source/devices/mrvl_pcie_rc_pmu_<>/events/
22 /sys/bus/event_source/devices/mrvl_pcie_rc_pmu_<>/format/
23
24 Examples::
25
26 # perf list | grep mrvl_pcie_rc_pmu
27 mrvl_pcie_rc_pmu_<>/ats_inv/ [Kernel PMU event]
28 mrvl_pcie_rc_pmu_<>/ats_inv_latency/ [Kernel PMU event]
29 mrvl_pcie_rc_pmu_<>/ats_pri/ [Kernel PMU event]
30 mrvl_pcie_rc_pmu_<>/ats_pri_latency/ [Kernel PMU event]
31 mrvl_pcie_rc_pmu_<>/ats_trans/ [Kernel PMU event]
32 mrvl_pcie_rc_pmu_<>/ats_trans_latency/ [Kernel PMU event]
33 mrvl_pcie_rc_pmu_<>/ib_inflight/ [Kernel PMU event]
34 mrvl_pcie_rc_pmu_<>/ib_reads/ [Kernel PMU event]
35 mrvl_pcie_rc_pmu_<>/ib_req_no_ro_ebus/ [Kernel PMU event]
36 mrvl_pcie_rc_pmu_<>/ib_req_no_ro_ncb/ [Kernel PMU event]
37 mrvl_pcie_rc_pmu_<>/ib_tlp_cpl_partid/ [Kernel PMU event]
38 mrvl_pcie_rc_pmu_<>/ib_tlp_dwords_cpl_partid/ [Kernel PMU event]
39 mrvl_pcie_rc_pmu_<>/ib_tlp_dwords_npr/ [Kernel PMU event]
40 mrvl_pcie_rc_pmu_<>/ib_tlp_dwords_pr/ [Kernel PMU event]
41 mrvl_pcie_rc_pmu_<>/ib_tlp_npr/ [Kernel PMU event]
42 mrvl_pcie_rc_pmu_<>/ib_tlp_pr/ [Kernel PMU event]
43 mrvl_pcie_rc_pmu_<>/ob_inflight_partid/ [Kernel PMU event]
44 mrvl_pcie_rc_pmu_<>/ob_merges_cpl_partid/ [Kernel PMU event]
45 mrvl_pcie_rc_pmu_<>/ob_merges_npr_partid/ [Kernel PMU event]
46 mrvl_pcie_rc_pmu_<>/ob_merges_pr_partid/ [Kernel PMU event]
47 mrvl_pcie_rc_pmu_<>/ob_reads_partid/ [Kernel PMU event]
48 mrvl_pcie_rc_pmu_<>/ob_tlp_cpl_partid/ [Kernel PMU event]
49 mrvl_pcie_rc_pmu_<>/ob_tlp_dwords_cpl_partid/ [Kernel PMU event]
50 mrvl_pcie_rc_pmu_<>/ob_tlp_dwords_npr_partid/ [Kernel PMU event]
51 mrvl_pcie_rc_pmu_<>/ob_tlp_dwords_pr_partid/ [Kernel PMU event]
52 mrvl_pcie_rc_pmu_<>/ob_tlp_npr_partid/ [Kernel PMU event]
53 mrvl_pcie_rc_pmu_<>/ob_tlp_pr_partid/ [Kernel PMU event]
54
55
56 # perf stat -e ib_inflight,ib_reads,ib_req_no_ro_ebus,ib_req_no_ro_ncb <workload>
57

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

PCIe transaction과 ATS counters

1-18

각 PCI Express Interface Unit (PEM)에는 대응하는 monitoring unit이 있으며, PCIe link로 전송되는 data의 여러 특성을 performance counter로 추적합니다.

Inbound와 outbound transaction에서 posted, non-posted, completion TLP를 별도 counter로 셉니다. 양방향 memory read requests와 latencies도 감시합니다.

Address Translation Services (ATS)의 `ATS Translation`, `ATS Page Request`, `ATS Invalidation` event와 각 latency도 추적합니다. TLP class별 inbound/outbound 64 bit counters와 ATS용 counter는 서로 분리되어 있습니다.

기능군측정
Inbound TLPPosted/non-posted/completion와 dword count
Outbound TLPPosted/non-posted/completion와 dword count
Memory readInbound/outbound request, inflight, latency 관련 event
ATSTranslation, Page Request, Invalidation와 각 latency
Partition`partid`가 붙은 outbound/inbound 세부 event

PEM event와 format

19-23

PMU driver는 사용 가능한 event와 format option을 sysfs에 노출합니다.

/sys/bus/event_source/devices/mrvl_pcie_rc_pmu_<>/events/
/sys/bus/event_source/devices/mrvl_pcie_rc_pmu_<>/format/
항목경로
Events`/sys/bus/event_source/devices/mrvl_pcie_rc_pmu_<>/events/`
Format`/sys/bus/event_source/devices/mrvl_pcie_rc_pmu_<>/format/`

ATS와 inbound/outbound event

24-56

`perf list | grep mrvl_pcie_rc_pmu`로 ATS, inbound, outbound event를 확인하고 필요한 inbound request event를 `perf stat`으로 함께 측정합니다.

# perf list | grep mrvl_pcie_rc_pmu
mrvl_pcie_rc_pmu_<>/ats_inv/             [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ats_inv_latency/     [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ats_pri/             [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ats_pri_latency/     [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ats_trans/           [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ats_trans_latency/   [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_inflight/         [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_reads/            [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_req_no_ro_ebus/   [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_req_no_ro_ncb/    [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_tlp_cpl_partid/   [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_tlp_dwords_cpl_partid/ [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_tlp_dwords_npr/   [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_tlp_dwords_pr/    [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_tlp_npr/          [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ib_tlp_pr/           [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_inflight_partid/  [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_merges_cpl_partid/ [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_merges_npr_partid/ [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_merges_pr_partid/ [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_reads_partid/     [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_tlp_cpl_partid/   [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_tlp_dwords_cpl_partid/ [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_tlp_dwords_npr_partid/ [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_tlp_dwords_pr_partid/ [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_tlp_npr_partid/   [Kernel PMU event]
mrvl_pcie_rc_pmu_<>/ob_tlp_pr_partid/    [Kernel PMU event]


# perf stat -e ib_inflight,ib_reads,ib_req_no_ro_ebus,ib_req_no_ro_ncb <workload>
Odyssey PEM event 기능군
영역Event
ATS invalidation`ats_inv`, `ats_inv_latency`
ATS page request`ats_pri`, `ats_pri_latency`
ATS translation`ats_trans`, `ats_trans_latency`
Inbound request`ib_inflight`, `ib_reads`, `ib_req_no_ro_ebus`, `ib_req_no_ro_ncb`
Inbound TLP`ib_tlp_pr`, `ib_tlp_npr`, `ib_tlp_cpl_partid`, dword variants
Outbound request`ob_inflight_partid`, `ob_reads_partid`, merge variants
Outbound TLP`ob_tlp_pr_partid`, `ob_tlp_npr_partid`, `ob_tlp_cpl_partid`, dword variants

ATS와 inbound/outbound PCIe event를 방향과 transaction 종류별로 구조화했습니다.