计算 Redhat 内核调优中 shmmax 和 shmmni 参数的值

计算 Redhat 内核调优中 shmmax 和 shmmni 参数的值

如何计算 shmmax 和 shmmni 值并第一次在 Redhat 中定义。我想了解其背后的数学原理。我可以在内核参数中看到一个大数字,这个大数字是什么?它与物理内存有何关系?我有 128GB 内存和 SHMMAX=“123695063040”

答案1

根据红帽文档https://access.redhat.com/solutions/1437883(访问可能仅限于红帽授权客户):

  • 在 Red Hat Enterprise Linux 7.1 中,kernel.shmmax 和 kernel.shmall 的默认值已更改。

  • Red Hat Enterprise Linux 7.1 中 kernel.shmmax 和 kernel.shmall 的默认值已更改,以符合上游内核中设置的值。 kernel.shmmax 和 kernel.shmall 的新默认值设置为 18446744073692774399。

  • 在内核代码中使用以下公式计算新的默认值:

include/uapi/linux/shm.h
[...]
#define SHMMAX (ULONG_MAX - (1L<<24))    /* max shared seg size (bytes) */
#define SHMALL (ULONG_MAX - (1L<<24))    /* max shm system wide (pages) */

相关内容