Erläuterung der Spalte Shared Memory im Top-Dienstprogramm von Linux

4586
user7029

Bei einem unter Linux laufenden Programm treten Probleme mit der Speicherzuordnung auf. Wir verwenden das Dienstprogramm top, um die Ursache des Problems zu ermitteln. Wir haben festgestellt, dass ein Prozess für Shared Memory (die SHR-Spalte oben) einen zu hohen Wert hat.

Wenn Sie die MAN-Seite nach oben lesen, kann ich glauben, dass die SHR-Spalte den Speicherplatz für die Kommunikation zwischen Prozessen über Shared Memory darstellt. Ist das richtig?

Wenn dies der Fall ist, ist es für ANY-Prozess sinnvoll, 50 - 60 Megabyte gemeinsam genutzten Speicher zugewiesen zu haben (X11 weist nur 11 MB zu, was auf Grund dessen, was er tun muss, sinnvoll erscheint).

Vielen Dank...

0
Welches Programm speziell? John T vor 15 Jahren 0

2 Antworten auf die Frage

3
nagul

Die SHR- Spalte stellt einfach die Menge des gemeinsam genutzten Speichers dar, die vom Prozess verwendet wird. Es kann für die Kommunikation zwischen Prozessen verwendet werden, aber ein häufigeres Szenario ist, dass dies Speicher ist, der von gemeinsam genutzten Bibliotheken verwendet wird, in die eine Anwendung eine Verknüpfung erstellt hat.

Vom Linux-Kernel: Speicherverwaltung :

Gemeinsamer virtueller Speicher

Obwohl es im virtuellen Speicher möglich ist, dass Prozesse über separate (virtuelle) Adressräume verfügen, kann es vorkommen, dass Prozesse zum Teilen des Speichers erforderlich sind. Beispielsweise könnte es mehrere Prozesse im System geben, auf denen die Bash-Befehlsshell ausgeführt wird. Anstatt mehrere Kopien von Bash zu haben, eine in jedem virtuellen Adressraum, ist es besser, nur eine Kopie im physischen Speicher zu haben, und alle Prozesse, die Bash ausführen, teilen sich diese. Dynamische Bibliotheken sind ein weiteres allgemeines Beispiel für die Ausführung von Code, der von mehreren Prozessen gemeinsam genutzt wird.

Shared Memory kann auch als Inter Process Communication (IPC) -Mechanismus verwendet werden, wobei zwei oder mehr Prozesse Informationen über einen gemeinsamen Speicher austauschen. Linux unterstützt den Unix TM System V Shared Memory IPC.

Was die Top- Manpage über diese Kolumne sagt:

 t: SHR -- Shared Mem size (kb) The amount of shared memory used by a task. It simply reflects mem‐ ory that could be potentially shared with other processes. 
1
wfaulk

Ist es für JEDEN Prozess sinnvoll, 50 - 60 Megabyte Shared Memory zugewiesen zu haben

Ja.

In Oracle-Tuning-Handbüchern werden beispielsweise gemeinsame Speichergrößen von Gigabyte empfohlen.

Das heißt, wenn der Prozess "Katze" ist, macht es wahrscheinlich nicht viel Sinn.