Linux
SHMMAX + 錯誤設置不正確的核心參數如何影響
關於共享記憶體的幾句話
共享記憶體允許程序通過將它們放置在共享記憶體段中來訪問公共結構和數據。它是可用的最快的程序間通信形式,因為在程序之間傳遞數據時不涉及核心。事實上,數據不需要在程序之間複製。
我們注意到 redhat 機器中的價值是巨大的,如下所示
cat /proc/sys/kernel/shmmax 17446744003692774391 sysctl -a | grep kernel.shmmax kernel.shmmax = 17446744003692774391
當我計算到千兆時 - 16248546544.17632
合乎邏輯嗎?, 我們在這裡錯過了什麼嗎
機器有 64G 和 16 個 CPU,用於 hadoop 集群
預設值為_
shmmax
_#define SHMMAX (ULONG_MAX - (1UL << 24))
這是一個上限,選擇盡可能大,同時限制溢出的風險:
SHMMNI、SHMMAX 和 SHMALL 是預設上限,可以通過 sysctl 進行修改。SHMMAX 和 SHMALL 值已被選擇為盡可能大,而不會促進通過“檢索目前限制;添加 X;更新限制”形式的操作調整限制時使用者空間導致溢出的情況。因此,不建議將 SHMMAX 和 SHMALL 做得更大。這些限制適用於 32 位和 64 位系統。
價值原樣;它設置正確,沒有錯誤。