| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > лимит threads |
| Автор: alezzz 2.10.2015, 11:31 |
| Linux NLVPS2 2.6.32-40-pve #1 SMP Fri Jul 24 11:16:05 CEST 2015 i686 GNU/Linux Debian GNU/Linux 7 Не получается создать больше 250 потоков, ОЗУ хватает. Thread creation failed: pthread_create returned 11 at ... из того что нашел в интернете: # cat /proc/sys/kernel/threads-max 126962 # cat /proc/sys/kernel/pid_max 32768 вроде как должно хватать, что не дает создать больше потоков? |
| Автор: tzirechnoy 2.10.2015, 14:57 |
| А ulimit -u что говорит? |
| Автор: alezzz 2.10.2015, 15:14 |
| # ulimit -u 63481 |
| Автор: tzirechnoy 3.10.2015, 17:28 |
| Стоп. i686? Да нифига не хватает памяти (виртальной), там метров 10 под стэк каждой нити сразу выделяется. |
| Автор: alezzz 4.10.2015, 08:53 |
| Да 686, а почему не хватает? Смотрю по top, было 500М ОЗУ, запускал 200 потоков и они с постепенной утечкой памяти забрали от 75% вначале до 90% памяти. Добавили на сервер еще памяти до 1Г, запускаю 250 потоков, по top они забирают до 50% ОЗУ. |
| Автор: tzirechnoy 4.10.2015, 16:14 |
| Да пофиг на ОЗУ, ему с умолчательными настройками VIRT нехватит -- там 2 или 3 GiB в зависимости от ядра. |
| Автор: alezzz 4.10.2015, 16:42 |
| virt под 3000m, на это вообще не обратил внимание. ясно, спасибо. Добавлено через 2 минуты и 23 секунды а неумолчательные это какие, или на x32 выше уже не прыгнешь? |
| Автор: alezzz 5.10.2015, 09:42 | ||
нашел
так можно уменьшить размер стека, запустил 600 потоков, только теперь использование ОЗУ около 97%. |
| Автор: tzirechnoy 6.10.2015, 16:56 |
| Ну да, как-то так. Если уменьшыть килобайт до 50 -- то можно где-то вдвое большэ, наверное, но там ужэ упираемся в то, что perl сейчас иницыализирует новый интэрпретатор для каждой нити, и ему реально сотни килобайт памяти требуются. |