75
Bearbeitungen
Änderungen
RAM
,Erläuterungen zum nicht angezeigten RAM in den 4K-Boxen
= RAM =
Random-Access-Memory, zu Deutsch, Speicher mit wahlfreiem/direktem Zugriff, Direktzugriffsspeicher, abgekürzt RAM, ist ein Informations-Speicher, der besonders bei Computern als Arbeitsspeicher Verwendung findet.
== Besonderheiten bei den 4K-Boxen mit ARM-Prozessor ==
Der SoC von Broadcom, der in den 4K-Boxen von VU+ verbaut ist, zweigt einen Teil des Hauptspeichers für Audio-/Video-Buffering-Zwecke ab. Dieser Speicher steht dem Betriebssystem für andere Aufgaben nicht zur Verfügung und wird konsequent auch nicht mit den bekannten Tools angezeigt ('''free''', '''cat /proc/meminfo''', '''top''', '''htop''', ...).
Zum Beispiel wird für die Vu+ Solo 4k, in der 2 GB RAM verbaut sind, folgendes angezeigt:
# free -h
total used free shared buff/cache available
Mem: 887M 156M 94M 656K 637M 709M
Swap: 0B 0B 0B
Dem vermeintlich fehlenden Speicher kommen wir in folgende Dateien und Ausgaben auf die Spur:
In '''/var/log/messages''' oder mit dem Befehl '''dmesg''' wird direkt beim Booten folgendes angezeigt (umgebrochen, um's lesbarer zu machen):
[ 0.000000] Memory: 892100K/2097152K available
(5849K kernel code,
320K rwdata,
1904K rodata,
248K init,
184K bss,
1188668K reserved,
16384K cma-reserved,
671744K highmem)
Hier sieht man schon, dass von den 2GB (2097152K) der Box dem Linux nur knapp 1GB (892100K) zur Verfügung stehen. Mehr als die Hälfte (1188668K) sind reserviert, und zwar vom Chipsatz.
Verantwortlich dafür sind die Parameter, mit denen der Kernel initialisiert wird (direkt darüber, wieder umgebrochen):
[ 0.000000] Kernel command line:
root=/dev/mmcblk0p4 rootwait rw rootflags=data=journal debug
coherent_pool=2M
bmem=633m@387m
bmem=499m@2573m
Die beiden "bmem"-Parameter zwacken Speicher für den Broadcom-Chipsatz ab - es gibt dafür einen Treiber '''linux/drivers/soc/brcmstb/bmem.c''', der diesen Parameter dafür auswertet. Im Code für diesen Treiber finden wir auch, was die Abkürzung "bmem" bedeutet:
/***********************************************************************
* BMEM (reserved A/V buffer memory) support
***********************************************************************/
Die Speicherbereiche sind unter '''/proc/iomem''' aufgeführt:
# cat /proc/iomem
00000000-3fffffff : System RAM
00008000-0079a7ff : Kernel code
007da000-0085861b : Kernel data
18300000-3fbfffff : bmem.0
80000000-bfffffff : System RAM
a0d00000-bfffffff : bmem.1
...
Noch ein wenig rechnen und wir erhalten:
* '''0x3fffffff''' ist dezimal 1073741823 - also 1GB.
* '''0xbfffffff - 0x80000000''' ist ebenfalls dezimal 1073741823 - also 1GB.
* der Bereich für '''bmem.0''' ist 663748607 Bytes groß (633MB)
* der Bereich für '''bmem.1''' entspricht 523239424 Bytes (499MB)
Damit sollte das Geheimnis des fehlenden Speichers gelüftet sein.