
La mémoire partagée est la mémoire à laquelle plusieurs processus peuvent accéder; c'est-à-dire une région de mémoire qui peut être partagée entre différents processus et une meilleure façon de transmettre des données entre deux processus. La mémoire partagée est la forme la plus rapide de communication inter-processus actuellement disponible.
Supposons que le programme crée une portion de mémoire, à laquelle un autre processus peut accéder (si autorisé). Un segment partagé peut être attaché plusieurs fois par le même processus. Chaque fois que la mémoire est mappée dans l'espace d'adressage du processus, c'est-à-dire partageant la région de mémoire commune, le noyau n'impliquera pas le transfert de données entre les processus. De nombreuses applications, comme Oracle SGA nécessitant des paramètres de mémoire partagée, utilisent cette fonctionnalité.
Vérifions quelques commandes IPCS à travers quelques exemples.
Imprimer les segments de mémoire partagée actifs à l'aide de -m
option.
où,
L'état "dest" signifie que le segment de mémoire est marqué pour être détruit
le champ "nattach" montre combien de pid d'application sont encore attachés à la mémoire partagée
# 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
La commande suivante imprime des informations sur les segments de mémoire partagée actifs :
# ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
Imprimer des informations sur les files d'attente de mémoire partagée active :
# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
Affiche des informations sur les sémaphores accessibles aux sémaphores. L'ipcs -l montre la limite de la mémoire partagée, des sémaphores et des messages.
# 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
La commande ci-dessous indique la taille maximale du segment de mémoire unique que le processus Linux peut allouer dans son espace d'adressage virtuel. Vous pouvez limiter la taille maximale du segment de mémoire unique en exécutant la commande suivante.
# cat /proc/sys/kernel/shmmax
4294967295
Vous pouvez définir la valeur shmmax en faisant écho au fichier /proc concerné comme ci-dessous. La commande suivante définira la taille maximale (en termes d'octets) d'un seul segment de mémoire sur 8388698 :
# echo 8388608 > /proc/sys/kernel/shmmax
De la même manière, vous pouvez définir la taille maximale autorisée de tout message unique dans une file d'attente de messages System V IPC, en octets.
# echo 8192 > /proc/sys/kernel/msgmax
Vous pouvez vérifier le paramètre actuel du noyau pour le sémaphore avec la commande suivante.
# 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
Conclusion
Dans ce didacticiel, nous avons appris la commande Linux ipcs pour vérifier les informations de mémoire partagée. J'espère que vous avez apprécié la lecture et s'il vous plaît laissez vos suggestions dans la section des commentaires ci-dessous.