Максимальное количество потоков на процесс в Linux? - PullRequest
220 голосов
/ 05 декабря 2008

Какое максимальное количество потоков может быть создано процессом в Linux?

Как (если возможно) можно изменить это значение?

Ответы [ 16 ]

3 голосов
/ 16 ноября 2009

Использование nbio неблокирующий ввод / вывод библиотека или что-то еще, если вам нужно больше потоков для выполнения вызовов ввода / вывода, которые блокируют

2 голосов
/ 21 июня 2013

Зависит от вашей системы, просто напишите пример программы [путем создания процессов в цикле] и проверьте, используя ps axo pid, ppid, rss, vsz, nlwp, cmd. Когда он больше не может создавать потоки, проверьте количество nlwp [nlwp - это число потоков] вуаля, вы получили свой надежный ответ вместо того, чтобы идти по книгам

0 голосов
/ 03 августа 2018

Да, чтобы увеличить количество потоков, вам нужно увеличить виртуальную память или уменьшить размер стека. В Raspberry Pi я не нашел способа увеличить виртуальную память, если уменьшить размер стека с 8 МБ до 1 МБ. Возможно, получится более 1000 потоков на процесс, но уменьшить размер стека с помощью команды «ulimit -s». сделать это для всех потоков. Итак, мое решение было использовать экземпляр «pthread_t» «класс потока», потому что pthread_t позволяет мне установить размер стека для каждого потока. Наконец, я могу архивировать более 1000 потоков на процесс в Raspberry Pi, каждый из которых имеет 1 МБ стека.

0 голосов
/ 11 мая 2018

Вы можете увидеть текущее значение с помощью следующей команды: cat / proc / sys / kernel / threads-max

Вы также можете установить значение как

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

Установленное вами значение будет проверено по доступным страницам ОЗУ. Если структуры потоков занимают более 1/8 всех доступных страниц ОЗУ, то максимальный поток будет соответственно уменьшен.

0 голосов
/ 17 октября 2016

Для постоянной установки,

vim /etc/sysctl.conf

и добавьте

kernel.threads-max = "value"
0 голосов
/ 25 июля 2016

Мы видим максимальное количество потоков, определенных в следующем файле в linux

cat / proc / sys / kernel / threads-max

(ИЛИ)

sysctl -a | grep threads-max

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...