Was sind Shmpages für Laien?


7

Was genau steckt shmpagesim großen Schema der Kernel- und Speicherterminologie ? shmpagesWas bedeutet es, wenn ich an ein Limit stoße?

Ich bin auch neugierig, ob dies für mehr als Linux gilt

Antworten:


11

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 bansheeMusik abgespielt und vlcein Video abgespielt wird. Beide Prozesse müssen Zugriff haben, pulseaudioum 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

shmmniist die maximale Anzahl zulässiger gemeinsam genutzter Speichersegmente, shmmaxdie zulässige Größe eines gemeinsam genutzten Speichersegments (32 MB) und shmalldie 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.

ipcrmkann 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 sysctlWerte, ...

Dies ist nicht Linux-spezifisch und gilt auch für (die meisten) UNIX-Systeme (Shared Memory wurde erstmals in CB UNIX angezeigt ).


Ein Nitpick: Verwenden Sie diesen Befehl, um stattdessen den aktuell verwendeten gemeinsam genutzten Speicher zu finden: grep Shmem /proc/meminfoDies verhindert eine UUC (nutzlose Verwendung von Cat ...)
Mei

Wow, tolle detaillierte Antwort, viele kleine
Juwelen

Also, womit wird shmpagesverglichen kernel.shm{max,all,mni}?
user278844
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.