无法编辑 /proc/sys/kernel/threads-max

无法编辑 /proc/sys/kernel/threads-max

我目前正在构建一个压力测试工具,因此我需要大量的线程。我已经尝试了所有设置来提高限制,但还有最后一个设置,即系统范围的上限/proc/sys/kernel/threads-max,我似乎无法更改。

我试过

sysctl -w kernel.threads-max=200000

nano使用或手动编辑echo

echo 200000 > /proc/sys/kernel/threads-max

编辑/etc/sysctl.conf并运行

sysctl -f

如果我以 方式运行这些sudo,则不会显示任何错误(甚至会显示新值),但再次检查时,该值也没有改变。当尝试使用 编辑该值时gedit,它会弹出

无效的论点”

无论我尝试什么值,即使是原始值。更改该值我没有遇到任何问题pid_max

我真的不知道为什么它拒绝我的编辑,而且我找不到遇到类似问题的人,所以如果有人能解释发生了什么,我将非常感激。

答案1

答案就在 中man proc(5),下面是有趣的部分:

 /proc/sys/kernel/threads-max (since Linux 2.3.11)
                     This file specifies the system-wide limit on the number
                     of threads (tasks) that can be created on the system.

                     Since Linux 4.1, the value that can be written to
                     threads-max is bounded.  The minimum value that can be
                     written is 20.  The maximum value that can be written
                     is given by the constant FUTEX_TID_MASK (0x3fffffff).
                     If a value outside of this range is written to threads-
                     max, the error EINVAL occurs.

                     The value written is checked against the available RAM
                     pages.  If the thread structures would occupy too much
                     (more than 1/8th) of the available RAM pages, threads-
                     max is reduced accordingly.

我假设你的内核版本> 4.1,所以由于 200000(你尝试的数字)小于 0x3fffffff,问题看起来像是可用 RAM 不足。

相关内容