Shared Memory ist der Speicher, auf den von mehreren Prozessen zugegriffen werden kann; dh ein Speicherbereich, der von verschiedenen Prozessen gemeinsam genutzt werden kann, und eine bessere Möglichkeit, Daten zwischen zwei Prozessen zu übergeben. Shared Memory ist die schnellste derzeit verfügbare Form der Kommunikation zwischen Prozessen.
Angenommen, das Programm erstellt einen Speicherbereich, auf den ein anderer Prozess zugreifen kann (falls zulässig). Ein gemeinsam genutztes Segment kann mehrmals durch denselben Prozess angehängt werden. Immer wenn der Speicher in den Adressraum des Prozesses abgebildet wird, d. h. den gemeinsamen Speicherbereich teilt, wird der Kernel nicht involviert sein, während Daten zwischen den Prozessen ausgetauscht werden. Viele Anwendungen, wie Oracle SGA, erfordern Shared-Memory-Einstellungen, verwenden diese Funktion.
Sehen wir uns einige IPCS-Befehle anhand einiger Beispiele an.
Drucken Sie aktive Shared-Memory-Segmente mit -m
Option.
wo,
Der „dest“-Status bedeutet, dass das Speichersegment zum Löschen markiert ist
Das Feld "nattach" zeigt an, wie viele Anwendungs-PIDs noch mit dem Shared Memory verknüpft sind
# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 65536 root 600 393216 2 dest
0x00000000 98305 root 600 393216 2 dest
Der folgende Befehl gibt Informationen über aktive Shared-Memory-Segmente aus:
# ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
Informationen über aktive Shared-Memory-Warteschlangen drucken:
# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
Drucken Sie Informationen über Semaphore, die zugängliche Semaphore sind. Das ipcs -l zeigt die Grenze des gemeinsam genutzten Speichers, Semaphoren und Nachrichten.
# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 1073741824
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 16
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536
Der folgende Befehl zeigt die maximale Größe des einzelnen Speichersegments, das der Linux-Prozess in seinem virtuellen Adressraum zuweisen kann. Sie können die maximale Größe des einzelnen Speichersegments begrenzen, indem Sie den folgenden Befehl ausführen.
# cat /proc/sys/kernel/shmmax
4294967295
Sie können den shmmax-Wert festlegen, indem Sie wie unten an die betreffende /proc-Datei echoen. Der folgende Befehl legt die maximale Größe (in Bytes) eines einzelnen Speichersegments auf 8388698 fest:
# echo 8388608 > /proc/sys/kernel/shmmax
Auf ähnliche Weise können Sie die maximal zulässige Größe jeder einzelnen Nachricht in einer System V IPC-Nachrichtenwarteschlange in Byte festlegen.
# echo 8192 > /proc/sys/kernel/msgmax
Mit dem folgenden Befehl können Sie den aktuellen Kernel-Parameter auf Semaphor überprüfen.
# cat /proc/sys/kernel/sem
250 32000 32 128
where
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
Schlussfolgerung
In diesem Tutorial haben wir den Linux-ipcs-Befehl zum Überprüfen von Shared-Memory-Informationen gelernt. Ich hoffe, Sie hatten Spaß beim Lesen und hinterlassen Sie bitte Ihre Vorschläge im Kommentarbereich unten.