SHMMAX + 错误设置不正确的内核参数如何影响

SHMMAX + 错误设置不正确的内核参数如何影响

关于共享内存的几句话

共享内存允许进程通过将公共结构和数据放置在共享内存段中来访问它们。它是可用的最快的进程间通信形式,因为在进程之间传递数据时不会发生内核参与。事实上,进程之间不需要复制数据。

我们注意到红帽机器的价值是巨大的,如下所示

 cat /proc/sys/kernel/shmmax
 17446744003692774391

 sysctl -a | grep kernel.shmmax
 kernel.shmmax = 17446744003692774391

当我计算到千兆时 - 16248546544.17632

符合逻辑吗? ,我们是不是错过了什么

机器有64G和16个CPU,用于hadoop集群

答案1

默认值对于shmmax

#define SHMMAX (ULONG_MAX - (1UL << 24))

这是一个上限,选择尽可能大,同时限制溢出风险:

SHMMNI、SHMMAX 和 SHMALL 是默认上限,可以通过 sysctl 修改。 SHMMAX 和 SHMALL 值已选择为尽可能大,而不会促进通过“检索当前限制;添加 X;更新限制”形式的操作调整限制时用户空间导致溢出的情况。因此不建议将 SHMMAX 和 SHMALL 设置得更大。这些限制适用于 32 位和 64 位系统。

其价值原样良好;设置正确,没有错误。

相关内容