RAM: Unterschied zwischen den Versionen
Schomi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Random-Access-Memory, zu Deutsch, Speicher mit wahlfreiem/direktem Zugriff, Direktzugriffsspeicher, abgekürzt RAM, ist ein Informations-Speicher, der besonder…“) |
Rdamas (Diskussion | Beiträge) (Erläuterungen zum nicht angezeigten RAM in den 4K-Boxen) |
||
Zeile 1: | Zeile 1: | ||
+ | = 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. | 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. |
Version vom 31. Oktober 2022, 09:41 Uhr
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.