Linux

SHMMAX + 錯誤設置不正確的核心參數如何影響

  • May 30, 2019

關於共享記憶體的幾句話

共享記憶體允許程序通過將它們放置在共享記憶體段中來訪問公共結構和數據。它是可用的最快的程序間通信形式,因為在程序之間傳遞數據時不涉及核心。事實上,數據不需要在程序之間複製。

我們注意到 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 位系統。

價值原樣;它設置正確,沒有錯誤。

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