如何計算系統可用共享記憶體的大小

如何計算系統可用共享記憶體的大小

根據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

OOM 殺手如何決定先殺死哪個進程?

另一方面你可以限制每個行程使用的虛擬記憶體ulimt -v都不會影響核心/proc/sys/kernel/shmall

相關內容