Was genau steckt shmpages
im großen Schema der Kernel- und Speicherterminologie ? shmpages
Was bedeutet es, wenn ich an ein Limit stoße?
Ich bin auch neugierig, ob dies für mehr als Linux gilt
Was genau steckt shmpages
im großen Schema der Kernel- und Speicherterminologie ? shmpages
Was bedeutet es, wenn ich an ein Limit stoße?
Ich bin auch neugierig, ob dies für mehr als Linux gilt
Antworten:
Prozesse im Benutzermodus können Interprozesskommunikation (IPC) verwenden, um miteinander zu kommunizieren. Die schnellste Methode, dies zu erreichen, ist die Verwendung von gemeinsam genutzten Speicherseiten ( shmpages
).
Dies geschieht beispielsweise, wenn banshee
Musik abgespielt und vlc
ein Video abgespielt wird. Beide Prozesse müssen Zugriff haben, pulseaudio
um Ton auszugeben.
Versuchen Sie, mit einigen der folgenden Befehle mehr über die Konfiguration und Verwendung des gemeinsam genutzten Speichers zu erfahren:
Zeigen Sie die Shared Memory-Konfiguration an:
sysctl kernel.shm{max,all,mni}
Standardmäßig (Linux 2.6) sollte dies Folgendes ausgeben:
kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096
shmmni
ist die maximale Anzahl zulässiger gemeinsam genutzter Speichersegmente, shmmax
die zulässige Größe eines gemeinsam genutzten Speichersegments (32 MB) und shmall
die maximale Gesamtgröße aller Segmente (als Seiten angezeigt, übersetzt in 8 GB).
Der aktuell verwendete gemeinsam genutzte Speicher:
grep Shmem /proc/meminfo
Wenn durch die Distribution aktiviert:
ls -l /dev/shm
ipcs
ist ein großartiges Tool, um mehr über die IPC-Nutzung zu erfahren:
ipcs -m
Wenn die Nutzung des gemeinsam genutzten Speichers ausgegeben wird, können Sie die zugewiesenen Segmente mit den entsprechenden Größen anzeigen.
ipcs -m -i <shmid>
Zeigt weitere Informationen zu einem bestimmten Segment an, einschließlich der PID des Prozesses, der (cpid) erstellt, und der letzten (lpid), die es verwendet.
ipcrm
kann gemeinsam genutzte Speichersegmente entfernen (beachten Sie jedoch, dass diese nur entfernt werden, wenn keine anderen Prozesse an sie angehängt sind, siehe die Spalte nattach in ipcs -m
).
ipcrm -m <shmid>
Ein Mangel an gemeinsam genutztem Speicher kann ein Programm sein, das viel gemeinsam genutzten Speicher verwendet. Ein Programm, das die zugewiesenen Segmente nicht richtig trennt, geänderte sysctl
Werte, ...
Dies ist nicht Linux-spezifisch und gilt auch für (die meisten) UNIX-Systeme (Shared Memory wurde erstmals in CB UNIX angezeigt ).
shmpages
verglichen kernel.shm{max,all,mni}
?
grep Shmem /proc/meminfo
Dies verhindert eine UUC (nutzlose Verwendung von Cat ...)