← Documents Documentation/admin-guide/perf/meson-ddr-pmu.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Performance

Amlogic SoC DDR Bandwidth PMU

Meson G12의 total/channel DDR bandwidth event와 IP source filter를 설명합니다.

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

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

1. 요약·해설

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

운영 요약

meson-ddr-pmu.rst:1-70

Total bandwidth를 먼저 확인한 뒤 4개 channel에 CPU, GPU 등 최대 3개 AXI port source를 배치하여 DDR bottleneck의 원인을 분리합니다.

관점핵심
SoCAmlogic Meson G12
MonitorDRAM controller 내부 DDR bandwidth monitor
Channels4 channels, channel마다 AXI port 최대 3개 동시 count
EventsTotal 1개와 channel-specific 4개
FilterSoC IP module별 DDR access request keyword
용도DDR bandwidth bottleneck 확인

2. 영어 원문 전체

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

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 ===========================================================
4 Amlogic SoC DDR Bandwidth Performance Monitoring Unit (PMU)
5 ===========================================================
6
7 The Amlogic Meson G12 SoC contains a bandwidth monitor inside DRAM controller.
8 The monitor includes 4 channels. Each channel can count the request accessing
9 DRAM. The channel can count up to 3 AXI port simultaneously. It can be helpful
10 to show if the performance bottleneck is on DDR bandwidth.
11
12 Currently, this driver supports the following 5 perf events:
13
14 + meson_ddr_bw/total_rw_bytes/
15 + meson_ddr_bw/chan_1_rw_bytes/
16 + meson_ddr_bw/chan_2_rw_bytes/
17 + meson_ddr_bw/chan_3_rw_bytes/
18 + meson_ddr_bw/chan_4_rw_bytes/
19
20 meson_ddr_bw/chan_{1,2,3,4}_rw_bytes/ events are channel-specific events.
21 Each channel support filtering, which can let the channel to monitor
22 individual IP module in SoC.
23
24 Below are DDR access request event filter keywords:
25
26 + arm - from CPU
27 + vpu_read1 - from OSD + VPP read
28 + gpu - from 3D GPU
29 + pcie - from PCIe controller
30 + hdcp - from HDCP controller
31 + hevc_front - from HEVC codec front end
32 + usb3_0 - from USB3.0 controller
33 + hevc_back - from HEVC codec back end
34 + h265enc - from HEVC encoder
35 + vpu_read2 - from DI read
36 + vpu_write1 - from VDIN write
37 + vpu_write2 - from di write
38 + vdec - from legacy codec video decoder
39 + hcodec - from H264 encoder
40 + ge2d - from ge2d
41 + spicc1 - from SPI controller 1
42 + usb0 - from USB2.0 controller 0
43 + dma - from system DMA controller 1
44 + arb0 - from arb0
45 + sd_emmc_b - from SD eMMC b controller
46 + usb1 - from USB2.0 controller 1
47 + audio - from Audio module
48 + sd_emmc_c - from SD eMMC c controller
49 + spicc2 - from SPI controller 2
50 + ethernet - from Ethernet controller
51
52
53 Examples:
54
55 + Show the total DDR bandwidth per seconds:
56
57 .. code-block:: bash
58
59 perf stat -a -e meson_ddr_bw/total_rw_bytes/ -I 1000 sleep 10
60
61
62 + Show individual DDR bandwidth from CPU and GPU respectively, as well as
63 sum of them:
64
65 .. code-block:: bash
66
67 perf stat -a -e meson_ddr_bw/chan_1_rw_bytes,arm=1/ -I 1000 sleep 10
68 perf stat -a -e meson_ddr_bw/chan_2_rw_bytes,gpu=1/ -I 1000 sleep 10
69 perf stat -a -e meson_ddr_bw/chan_3_rw_bytes,arm=1,gpu=1/ -I 1000 sleep 10
70
71

3. 한국어 전문 번역

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

Meson G12 DDR bandwidth monitor

1-10

이 문서는 `SPDX-License-Identifier: GPL-2.0`을 사용합니다. Amlogic Meson G12 SoC의 DRAM controller 안에는 bandwidth monitor가 있습니다.

Monitor는 4 channels를 가지며 각 channel은 DRAM access request를 셉니다. Channel 하나가 최대 `3 AXI port`를 동시에 셀 수 있어 performance bottleneck이 DDR bandwidth에 있는지 확인하는 데 유용합니다.

Total과 channel-specific event

11-22

현재 driver는 다음 5 perf events를 지원합니다.

EventPerf 이름
`total_rw_bytes``meson_ddr_bw/total_rw_bytes/`
`chan_1_rw_bytes``meson_ddr_bw/chan_1_rw_bytes/`
`chan_2_rw_bytes``meson_ddr_bw/chan_2_rw_bytes/`
`chan_3_rw_bytes``meson_ddr_bw/chan_3_rw_bytes/`
`chan_4_rw_bytes``meson_ddr_bw/chan_4_rw_bytes/`

`meson_ddr_bw/chan_{1,2,3,4}_rw_bytes/`는 channel-specific events입니다. 각 channel의 filtering으로 SoC의 개별 IP module을 감시할 수 있습니다.

DDR request source keyword

23-51

DDR access request event filter keyword는 request를 발생시킨 CPU, graphics/video block, PCIe/USB, storage, audio, network 등의 IP module을 선택합니다.

KeywordRequest source
`arm`CPU
`vpu_read1`OSD + VPP read
`gpu`3D GPU
`pcie`PCIe controller
`hdcp`HDCP controller
`hevc_front`HEVC codec front end
`usb3_0`USB3.0 controller
`hevc_back`HEVC codec back end
`h265enc`HEVC encoder
`vpu_read2`DI read
`vpu_write1`VDIN write
`vpu_write2`DI write
`vdec`Legacy codec video decoder
`hcodec`H264 encoder
`ge2d`GE2D
`spicc1`SPI controller 1
`usb0`USB2.0 controller 0
`dma`System DMA controller 1
`arb0`ARB0
`sd_emmc_b`SD eMMC B controller
`usb1`USB2.0 controller 1
`audio`Audio module
`sd_emmc_c`SD eMMC C controller
`spicc2`SPI controller 2
`ethernet`Ethernet controller

Total과 IP별 bandwidth 측정

52-70

1초 간격으로 10초 동안 total DDR bandwidth를 표시하는 예제입니다.

perf stat -a -e meson_ddr_bw/total_rw_bytes/ -I 1000 sleep 10

Channel 1에서 CPU, channel 2에서 GPU를 각각 측정하고 channel 3에서 두 source의 합을 측정하는 예제입니다.

perf stat -a -e meson_ddr_bw/chan_1_rw_bytes,arm=1/ -I 1000 sleep 10
perf stat -a -e meson_ddr_bw/chan_2_rw_bytes,gpu=1/ -I 1000 sleep 10
perf stat -a -e meson_ddr_bw/chan_3_rw_bytes,arm=1,gpu=1/ -I 1000 sleep 10