[devel] [Erlang] ограничение на количество потоков в Альте
Илья Курдюков
ilyakurdyukov на basealt.ru
Сб Ноя 20 15:07:09 MSK 2021
Почему в нормальных системах этот код возвращает 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: не удаётся изменить ограничение:
Операция не позволена
Эти ограничения с начала времён не меняли?
http://git.altlinux.org/gears/e/erlang.git
Почему в спеке Erlang делаются костыли с уменьшением количества потоков,
вместо того, чтобы наконец исправить устаревшие лимиты в Альте?
Подробная информация о списке рассылки Devel