Cómo verificar la memoria compartida de Linux usando el comando ipcs
La memoria compartida es la memoria a la que pueden acceder múltiples procesos; es decir, una región de memoria que se puede compartir entre diferentes procesos y una mejor forma de pasar datos entre dos procesos. La memoria compartida es la forma más rápida de comunicación entre procesos que está disponible actualmente.
Suponga que el programa creará una parte de la memoria, a la que puede acceder otro proceso (si está permitido). Un segmento compartido se puede adjuntar varias veces mediante el mismo proceso. Siempre que la memoria se mapee en el espacio de direcciones del proceso, es decir, compartiendo la región de memoria común, el kernel no se involucrará al pasar datos entre los procesos. Muchas aplicaciones, como Oracle SGA, requieren una configuración de memoria compartida, utilizan esta función.
Veamos algunos comandos de IPCS a través de algunos ejemplos.
Imprima segmentos activos de memoria compartida usando -m
opción.
dónde,
El estado «dest» significa que el segmento de memoria está marcado para ser destruido
El campo «nattach» muestra cuántos pid de la aplicación todavía están conectados a la memoria compartida
# 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
El siguiente comando imprime información sobre los segmentos de memoria compartida activos:
# ipcs -q ------ Message Queues -------- key msqid owner perms used-bytes messages
Imprima información sobre colas de memoria compartida activas:
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems
Imprime información sobre semáforos que son semáforos accesibles. El ipcs -l muestra el límite de memoria compartida, semáforos y mensajes.
# 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
El siguiente comando muestra el tamaño máximo del segmento de memoria único que el proceso de Linux puede asignar en su espacio de direcciones virtuales. Puede limitar el tamaño máximo de un solo segmento de memoria ejecutando el siguiente comando.
# cat /proc/sys/kernel/shmmax 4294967295
Puede establecer el valor shmmax haciendo eco en el archivo / proc correspondiente como se muestra a continuación. El siguiente comando establecerá el tamaño máximo (en términos de bytes) el segmento de memoria único se establece en 8388698:
# echo 8388608 > /proc/sys/kernel/shmmax
De manera similar, puede establecer el tamaño máximo permitido de cualquier mensaje individual en una cola de mensajes de IPC de System V, en bytes.
[root@localhost kernel]# echo 8192 > /proc/sys/kernel/msgmax
Puede verificar el parámetro actual del kernel para semáforo con el siguiente comando.
# 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
Conclusión
En este tutorial, aprendimos el comando ipcs de Linux para verificar la información de la memoria compartida. Espero que haya disfrutado de la lectura y deje sus sugerencias en la sección de comentarios a continuación.