Linux

什麼是外行術語的 shmpages?

  • February 20, 2012

shmpages核心和記憶體術語的宏偉計劃到底是什麼。如果我達到了shmpages極限,那是什麼意思?

我也很好奇這是否適用於 linux

使用者模式程序可以使用程序間通信 (IPC) 相互通信,實現這一點的最快方法是使用共享記憶體頁 ( shmpages)。

例如,如果banshee播放音樂和vlc播放影片,就會發生這種情況,這兩個程序都必須訪問pulseaudio才能輸出一些聲音。

嘗試使用以下一些命令了解有關共享記憶體配置和使用的更多資訊:

顯示共享記憶體配置:

sysctl kernel.shm{max,all,mni}

預設情況下(Linux 2.6)這應該輸出:

kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096

shmmni是允許的共享記憶體段的最大數量,是允許shmmax的共享記憶體段大小 (32 MB),shmall是所有段的最大總大小(顯示為頁面,轉換為 8 GB)

目前使用的共享記憶體:

grep Shmem /proc/meminfo

如果發行版啟用:

ls -l /dev/shm

ipcs是了解更多關於 IPC 使用情況的好工具:

ipcs -m 

將輸出共享記憶體使用情況,您可以看到分配的具有相應大小的段。

ipcs -m -i <shmid>

顯示有​​關指定段的更多資訊,包括創建程序的 PID (cpid) 和最後一個使用它的程序 (lpid)。

ipcrm可以刪除共享記憶體段(但請注意,只有在沒有其他程序連接到它們時才會刪除這些段,請參閱 中的 nattach 列ipcs -m)。

ipcrm -m <shmid>

共享記憶體不足可能是一個程序大量使用大量共享記憶體,一個程序沒有正確分離分配的段,修改了sysctl值,……

這不是 Linux 特定的,也適用於(大多數)UNIX 系統(共享記憶體首先出現在CB UNIX中)。

引用自:https://unix.stackexchange.com/questions/5498