1

В настоящее время я создаю инструмент стресс-тестирования, и поэтому мне нужно довольно большое количество потоков. Я уже прошел все настройки, чтобы поднять предел, но есть последний параметр, верхний общесистемный предел в /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 ответ1

3

Ответ лежит в 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, проблема выглядит как доступная оперативная память в недостаточном количестве.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .