Rockchip · AI & Linux Hub

Linux und Boot

Rockchip Linux DMA-BUF: Speicherlecks, IOVA und Spitzenbelegung untersuchen

Alle DMA-BUF-Debugmakros für RK3588 Linux 5.10, procfs sowie Quellbeispiele zur Speicher- und Spitzenbelegung bei Videowiedergabe.

· ArmSoM Editorial · Rockchip source documentation · 4 Min. Lesezeit

ArmSoM-Anwendbarkeit und Quelle

Plattformreferenz zur Anpassung an ArmSoM, übersetzt aus der chinesischen Fassung V1.0.0. Geltungsbereich der Quelle: RK3588, Linux 5.10. Ein englisches PDF liegt nicht vor; Englisch, Russisch und Deutsch sind vollständig aus dem Chinesischen übersetzt. Die deutsche Fassung verwendet dieselben Bild-URLs wie die englische. Bestimmte ArmSoM-Boards, SDK/BSP- oder Treiberkombinationen wurden weder bestätigt noch an Hardware geprüft. SoC, Speicheraufteilung des Boards, SDK/BSP, Kernelkonfiguration und Treiberimplementierung prüfen. Code, Adressen, Protokolle und Messwerte sind Quellbeispiele, keine ArmSoM-Testergebnisse.

Redaktionelle Prüfnotizen · ArmSoM Docs · Rockchip Linux

Die Quelle beschreibt die DMA-BUF-Diagnose bei Speicherlecks, Datenflussfehlern und fehlgeschlagenen Speicherabbildungen. Sie enthält keine technischen Abbildungen; es werden keine erfunden.

SoC der Quelle Kernel der Quelle
RK3588 Linux 5.10

1. Einführung

DMABUF ist eine Pufferstruktur für gemeinsam genutzten Speicher zwischen Multimediageräten. Über den Dateideskriptor eines DMABUF können Geräte Speicher prozessübergreifend teilen. Zero-Copy steigert die Leistung, asynchroner Zugriff verringert die Kopplung der Module.

2. Linux-Anpassungen zur DMABUF-Diagnose

2.1 DMABUF_DEBUG

Im beschriebenen BSP ist DMABUF debug ab Linux-5.10 verfügbar. In arch/arm64/configs/rockchip_defconfig aktivieren:

CONFIG_DMABUF_DEBUG=y

Mit diesem Makro erhält jeder DMABUF standardmäßig einen Namen aus pid+taskname mit 16 Zeichen. Beispiel:

416-allocator@4.

2.2 DMABUF_PROCFS

Im beschriebenen BSP ist DMABUF procfs ab Linux-5.10 verfügbar. In arch/arm64/configs/rockchip_defconfig aktivieren:

CONFIG_RK_DMABUF_PROCFS=y

Die Option erstellt unter /proc/ den Unterknoten rk_dmabuf mit folgenden Diagnoseknoten. Die Kommentare im Block bleiben aus der chinesischen Quelle erhalten:

dev # 显示所有DMABUF已经attach的device
sgt # 显示所有DMABUF的ScatterListTable,显示其IOVA
size # 显示所有DMABUF的total size
peak # 显示所有DMABUF的total size的峰值

Bedeutung der Knoten: dev zeigt angehängte Geräte, sgt die ScatterListTable und IOVA, size die Gesamtgröße und peak deren Höchstwert.

2.3 DMABUF_DEBUG_ADVANCED

Diese Unterfunktion von DMABUF procfs ermittelt die physischen Speicheradressen der DMABUFs. In arch/arm64/configs/rockchip_defconfig aktivieren:

CONFIG_DMABUF_DEBUG_ADVANCED=y

Mit dieser Option werden alle DMABUFs über ein Fake-Gerät angehängt und gemappt, um ihre sgt zu erhalten. Damit soll /proc/rk_dmabuf_sgt sämtliche IOVAs anzeigen. Der Pfad ist wörtlich aus der Quelle übernommen; im verwendeten BSP prüfen.

3. Fragen und Antworten

3.1 DMABUF-Speicherleck bei der Videowiedergabe auf RK3588?

Debugmakros aktivieren und beim Aufrufen des Hauptbildschirms den Speicher prüfen:

console:/ # cat /proc/rk_dmabuf/size
Total: 65552 KiB

Video abspielen, Wiedergabe beenden, Verlauf löschen und zum Hauptbildschirm zurückkehren:

console:/ # cat /proc/rk_dmabuf/size
Total: 83948 KiB

3.2 Maximale DMABUF-Speicherbelegung bei der Videowiedergabe auf RK3588?

Über den mpp-Debugknoten die gesamte DMABUF-Speicherbelegung der Videowiedergabe prüfen:

console:/ # cat /proc/mpp_service/sessions-summary
fdc38100.rkvdec-core Total: 699760 KiB

Den Spitzenwert über den DMABUF-Debugknoten prüfen:

console:/ # cat /proc/rk_dmabuf/peak
Peak: 1544 MiB

Den Spitzenwert auf null zurücksetzen und erneut beobachten:

console:/ # echo 0 > /proc/rk_dmabuf/peak

Dieses Thema entdecken → · Lernpfade →