根據RHEL文檔,系統上可用的共享記憶體總量等於shmall*PAGE_SIZE
。
我完成RHEL 6的安裝後,核心參數的值shmall
預設為4294967296,這表示系統範圍內可以使用的共享記憶體頁總數為4294967296,頁面大小為4096 B。
4294967296*4096/1024/1024/1024/1024 = 16 TB
……這遠大於作業系統的 RAM (8 GB) 大小。作業系統如何找到 16 TB 的共享記憶體來分配?
那麼, 的大小是否/dev/shm
等於共享記憶體的大小呢?如果不是,我怎麼才能獲得共享記憶體的實際大小?
答案1
你的計算是正確的。 shmall 可以設定為高於可用虛擬記憶體。如果您嘗試使用所有這些,那麼它不會因為 shmall 超出而失敗,而是因為其他原因。
順便說一句,還有一些命令可以找到這些 IPC 限制:
ipcs -l
lsipc # util-linux>=2.27
請注意,預設情況下,Linux 上的虛擬記憶體也是無限的,大於 RAM+swap。看
https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work
另一方面你可以限制每個行程使用的虛擬記憶體ulimt -v
都不會影響核心/proc/sys/kernel/shmall
。