[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