Processos de modo de usuário podem usar comunicação entre processos (IPC) para se comunicar, o método mais rápido de conseguir isso é usando páginas de memória compartilhada ( shmpages
).
Isto acontece por exemplo se banshee
toca música e vlc
reproduz um vídeo, ambos os processos têm que acessar pulseaudio
para produzir algum som.
Tente descobrir mais sobre configuração e uso de memória compartilhada com alguns dos seguintes comandos:
Exibe a configuração da memória compartilhada:
sysctl kernel.shm{max,all,mni}
Por padrão (Linux 2.6), isso deve dar saída:
kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096
shmmni
é o número máximo permitido de segmentos de memória compartilhada, shmmax
é o tamanho permitido de um segmento de memória compartilhada (32 MB) e shmall
é o tamanho total máximo de todos os segmentos (exibido como páginas, traduz para 8 GB)
A memória compartilhada usada atualmente:
grep Shmem /proc/meminfo
Se ativado pela distribuição:
ls -l /dev/shm
ipcs
é uma ótima ferramenta para descobrir mais sobre o uso do IPC:
ipcs -m
produzirá o uso da memória compartilhada, você poderá ver os segmentos alocados com os tamanhos correspondentes.
ipcs -m -i <shmid>
mostra mais informações sobre um segmento especificado, incluindo o PID da criação do processo (cpid) e o último (lpid) que o utiliza.
ipcrm
pode remover segmentos de memória compartilhada (mas esteja ciente de que eles só serão removidos se nenhum outro processo estiver anexado a eles, consulte a coluna nattach em ipcs -m
).
ipcrm -m <shmid>
A falta de memória compartilhada pode ser um programa que utiliza muito memória compartilhada, um programa que não separa os segmentos alocados adequadamente, modificou sysctl
valores, ...
Isso não é específico do Linux e também se aplica a sistemas UNIX (a maioria) (a memória compartilhada apareceu pela primeira vez em CB UNIX ) .