Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 секунды
Цитата(tzirechnoy @  4.10.2015,  16:14 Найти цитируемый пост)
ему с умолчательными настройками VIRT нехватит

а неумолчательные это какие, или на x32 выше уже не прыгнешь?

Автор: alezzz 5.10.2015, 09:42
нашел
Код

use threads ('stack_size' => 512*1024);

так можно уменьшить размер стека, запустил 600 потоков, только теперь использование ОЗУ около 97%. smile

Автор: tzirechnoy 6.10.2015, 16:56
Ну да, как-то так. Если уменьшыть килобайт до 50 -- то можно где-то вдвое большэ, наверное, но там ужэ упираемся в то, что perl сейчас иницыализирует новый интэрпретатор для каждой нити, и ему реально сотни килобайт памяти требуются.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)