Сколько потоков может обрабатывать один процесс в Linux (RHEL-5)? Как только потоки создаются, сколько стека может получить каждый поток?Что касается потоков в Linux
ответ
Размер стека нитей настраивается с использованием метода pthread_attr_setstack. Количество потоков imho ограничено только ресурсами, которые у вас есть, более 2K потоков работают в приложении, которое я знаю.
Максимальное количество потоков: Maximum number of threads per process in Linux?
размер стека:
Даже если pthread_attr_setstacksize() и pthread_attr_setstackaddr() теперь при условии, мы по-прежнему рекомендуем вам не использовать их, если вы на самом деле не имеют сильные причины для этого. Стратегия распределения стека по умолчанию для LinuxThreads практически оптимальна: стеки начинаются с малого (4k) и автоматически растут по требованию до довольно большого предела (2M). Более того, нет никакого портативного способа оценки требований к потоку потока, поэтому настройка размера стека делает вашу программу менее надежной и не переносной.
Существует не максимальное число потоков с помощью процесса.
Существует, однако, общая сумма активных потоков. Это значение может быть получено путем вводом:
cat /proc/sys/kernel/threads-max
вы также можете изменить это значение:
echo 99999 > /proc/sys/kernel/threads-max
Надеется, что это помогает.
Если вы на 32-битной машине, то стеки потоков будут потреблять адресное пространство в конце концов, в зависимости от размера, возможно, в < 10 000 потоков.
10k потоков, конечно, возможно, и некоторые люди запускают серверы производства с таким количеством, но вы действительно хотите быть уверены, что это лучший способ сделать то, что вы делаете.
Если вы думаете о том, что у вас есть потоки 10 тыс., У вас, вероятно, есть 64-битные машины, и много-много баранов.
Размер стека по умолчанию для x86 равен 4KiBytes. С конфигурацией ядра 4G/4G можно теоретически запустить 2 ** 20 потоков (более 1 миллиона). Когда NPTL был впервые анонсирован, авторы фактически выполнили этот тест, и они превысили уровень ниже 900000. Вы можете легко запустить 100 000 потоков (занимает около 2 секунд), и система будет по-прежнему использоваться (в отличие от LinuxThreads, где начинается 100000 потоков более 15 минут и приводит к остановке системы). –
Я работал над предположением, что для большинства приложений потребуется намного больше, чем 4k стека. – MarkR
Это неверно, Йорг. На i686 glibc зарезервирует 10M на стек адресного пространства для каждого потока. Очевидно, что ни одна из этой памяти не выделяется, но она потребляет большой кусок доступного пространства для отображения, и вы исчерпаете это после нескольких сотен потоков. Запуск потоков 100k требует настройки параметра размера стека. Я подозреваю, что вы думали только о ядре, а не о glibc-реализации pthreads. –
- 1. Что касается драйвера GPU в ядре Linux
- 2. Что касается файлов устройств в Linux
- 3. Что касается вывода gcov в ядре Linux?
- 4. Что касается номеров ошибок в Linux
- 5. Сравнение потоков Linux Linux
- 6. Что касается создания потока или пула потоков для 100 задач
- 7. Что касается *?
- 8. Совместимость потоков в linux
- 9. Что касается репликации sqlite
- 10. Что касается сравнения 2 последовательностей изображений в Linux/Ubuntu
- 11. Что касается блокировки уровня класса
- 12. Что касается состояния гонки в многопоточном чтении?
- 13. Что касается присоединения нитей в заказе
- 14. Что касается IBM TPM 7.2.1
- 15. Что касается обработки JVM-сигнала
- 16. Что касается сжатия lz4mt и проблемы с буферизацией linux
- 17. Что касается параллельных POSIX нитей
- 18. Что касается класса Семафора в .Net
- 19. Реализация потоков GNU/Linux
- 20. Что касается многопоточности в Android-SQLite?
- 21. Что касается вопроса PCI Express
- 22. изучение потоков на linux
- 23. Это касается разделяемой памяти в LINUX
- 24. Что касается Мьютексы и Semaphors
- 25. Выполнение программы потоков в Linux
- 26. Измерение миграции потоков в Linux
- 27. несколько потоков в Linux C
- 28. Что касается config.active_record.default_timezone
- 29. Что касается графического конвейера
- 30. Что касается Push-уведомления
LinuxThreads не поставляется с дистрибутивом Linux почти 7 лет. В частности, RHEL не отправил LinuxThreads с RHEL3. –
@ Jörg. Согласовано. Я не мог найти лучшего документа. У вас есть ссылка? –