我目前正在构建一个压力测试工具,因此我需要大量的线程。我已经尝试了所有设置来提高限制,但还有最后一个设置,即系统范围的上限/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 不足。