Erhöhen der Kernelspeichergröße

14

Ich habe eine Embedded-Karte mit 512 MB RAM, auf der Linux 2.6.29 und der UBoot-Bootloader ausgeführt werden. Der Kernel kann jedoch nur 128 MB RAM nutzen.

Ich habe versucht, den Wert von zu ändern XCODE_MEMSIZE, der meiner Meinung nach bestimmt, wie viel RAM der Kernel verwendet.

Wenn ich 512 einstelle, stürzt der Kernel beim Booten ab. Gibt es andere Konfigurationsparameter, die geändert werden müssen?

Tim
quelle
Können Sie den von Ihnen erwähnten Absturz genauer beschreiben? Was siehst du auf dem Bildschirm? Irgendwelche Fehler?
Straphka
Und welches Board ist das?
Gilles 'SO - hör auf böse zu sein'
Wirklich müssen mehr Details über "nur 128 MB verwenden können". Es hört sich so an, als wäre irgendwo etwas eingeschränkt (Stapelgröße pro Benutzer usw.).
Polynom
Wie viel Speicher erkennt U-Boot? Erkennt es die gesamten 512MB?
Freidenker
Was cat /proc/cmdlinesagt dir dein Board?
Ankur Agarwal

Antworten:

3

Ohne genauere Kenntnisse über Ihr Embedded Board fallen Ihnen zwei Dinge ein.

  1. Versuchen Sie den Kernel- mem=Boot-Parameter. (Ich denke, manchmal ist der Speicher von einer nicht fortlaufenden Adresse verfügbar, so dass Sie möglicherweise so etwas verwenden müssen, aber die Adressen müssen von Ihrem Mobo überprüft werden.

    mem = 512 M @ 0 mem = 256 M @ 0x80000000 mem = 256 M = 0xc0000000

  2. Haben Sie eine eingebettete Grafikkarte? Das könnte einen Teil Ihres verfügbaren RAMs herausnehmen. Wenn Sie zum BIOS oder einem gleichwertigen Gerät gelangen können, überprüfen Sie dies.

Weitere Informationen erhalten Sie unter Kernel-Parametermem=

Manwe
quelle
Möglicherweise müssen Sie einen Wert von weniger als 512 MB angeben - möglicherweise befindet sich ein Gerät oder etwas in der Nähe der physischen Adresse 0x20000000 (512 MB) in der Speicherzuordnung der Karte, von der Sie eine Kopie erhalten sollten, um zu erfahren, wo sich der RAM auf Ihrer Karte befindet.
LawrenceC
1

Ich denke, Sie sollten RAM DiskIhren Kernel vergrößern .

Satish
quelle
-1

Zusätzlich zu den anderen Posts, in denen es darum geht, genauer zu sein, würde ich auch vorschlagen, die Bereitstellung aufzuheben, /dev/shmwenn sie bereitgestellt wird. Das ist ein RAM-Disk-Dateisystem und frisst in Ihren RAM.

Schauen Sie sich auch den sysctlBefehl unter Linux an. Wenn Sie so etwas tun, sysctl -w kernel.shmmax="<some number>"wird der Kernel während der Ausführung geändert.

Freddie
quelle
4
/ dev / shm belegt kaum Speicher, wenn es leer ist. RAM wird erst verwendet, wenn Dateien in das RAM geladen wurden.
Patrick
/ dev / shm ist nichts anderes als die Implementierung eines traditionellen Shared-Memory-Konzepts. Es ist ein effizientes Mittel zum Übertragen von Daten zwischen Programmen. Ein Programm erstellt einen Speicherbereich, auf den andere Prozesse (sofern zulässig) zugreifen können. Dies wird die Dinge unter Linux beschleunigen.
Satish