[devel] [Erlang] ограничение на количество потоков в Альте
Dmitry V. Levin
ldv на altlinux.org
Сб Ноя 20 15:11:49 MSK 2021
On Sat, Nov 20, 2021 at 07:07:09PM +0700, Илья Курдюков wrote:
> Почему в нормальных системах этот код возвращает 10000 с плюсом, а в
> Альте 500 с чем-то?
>
> $ cat threadlim.c
> #include <stdio.h>
> #include <stdlib.h>
> #include <pthread.h>
> #include <unistd.h>
>
> static void* test(void *data) { while(1) sleep(1); return NULL; }
>
> int main() {
> int i, err = 0;
> pthread_t t;
> for (i = 0; !err && i < 100000; i++)
> err = pthread_create(&t, NULL, test, NULL);
> printf("i = %d, err = %d\n", i, err);
> exit(0);
> }
> $ cc -O2 -pthread threadlim.c && ./a.out
> i = 507, err = 11
>
> ulimit -u стоит по умолчанию на 512 и не даёт поставить выше 1000:
>
> $ ulimit -u
> 512
> $ ulimit -u 1000
> $ ulimit -u 1001
> -bash: ulimit: max user processes: не удаётся изменить ограничение:
> Операция не позволена
>
> Эти ограничения с начала времён не меняли?
Это очень похоже на настраиваемые лимиты со значениями по умолчанию,
определёнными в /etc/security/limits.d/50-defaults.conf
> http://git.altlinux.org/gears/e/erlang.git
>
> Почему в спеке Erlang делаются костыли с уменьшением количества потоков,
> вместо того, чтобы наконец исправить устаревшие лимиты в Альте?
Пакет должен собираться с любым разумным значением RLIMIT_NPROC,
а не только с авангардным.
--
ldv
Подробная информация о списке рассылки Devel