* Re: [devel] [#290158] FAILED del=python-module-yaml @ 2021-11-20 11:53 ` Dmitry V. Levin 2021-11-20 12:07 ` [devel] [Erlang] ограничение на количество потоков в Альте Илья Курдюков 0 siblings, 1 reply; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-20 11:53 UTC (permalink / raw) To: ALT Devel discussion list On Sat, Nov 20, 2021 at 02:58:43AM +0000, Girar awaiter (cleaner) wrote: > http://git.altlinux.org/tasks/290158/logs/events.1.1.log > > 2021-Nov-20 02:54:21 :: task #290158 for sisyphus started by cleaner: > 2021-Nov-20 02:54:21 :: message: Final removal of 13+ weeks x86_64 ftbfs package Коллеги, слово Final означает, что других вариантов не осталось, и пакет будет удалён. > #100 delete python-module-yaml > 2021-Nov-20 02:54:23 :: build check OK > 2021-Nov-20 02:54:23 :: noarch check OK > 2021-Nov-20 02:54:26 :: plan: src +0 -1 =17408, aarch64 +0 -2 =29133, armh +0 -2 =27472, i586 +0 -2 =29733, ppc64le +0 -2 =28916, x86_64 +0 -2 =30370 > 2021-Nov-20 02:56:09 :: patched apt indices > 2021-Nov-20 02:56:29 :: created next repo > 2021-Nov-20 02:56:44 :: duplicate provides check OK > x86_64: NEW unmet dependencies detected: > llvm11.0-tools#11.0.1-alt4:sisyphus+289472.200.2.1@1636807238 python2.7(yaml) > i586: NEW unmet dependencies detected: > llvm11.0-tools#11.0.1-alt4:sisyphus+289472.200.2.1@1636807474 python2.7(yaml) > aarch64: NEW unmet dependencies detected: > llvm11.0-tools#11.0.1-alt4:sisyphus+289472.200.2.1@1636810968 python2.7(yaml) > ppc64le: NEW unmet dependencies detected: > llvm11.0-tools#11.0.1-alt4:sisyphus+289472.200.2.1@1636811675 python2.7(yaml) > armh: NEW unmet dependencies detected: > llvm11.0-tools#11.0.1-alt4:sisyphus+289472.200.2.1@1636813636 python2.7(yaml) > ACLs of affected packages (1): > llvm11.0 shrek arseny @everybody > 2021-Nov-20 02:58:43 :: unmets: x86_64 +1 -0 =1, i586 +1 -0 =1, aarch64 +1 -0 =5, ppc64le +1 -0 =5, armh +1 -0 =19 > 2021-Nov-20 02:58:43 :: dependencies check FAILED > 2021-Nov-20 02:58:43 :: task #290158 for sisyphus FAILED -- ldv ^ permalink raw reply [flat|nested] 22+ messages in thread
* [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 11:53 ` [devel] [#290158] FAILED del=python-module-yaml Dmitry V. Levin @ 2021-11-20 12:07 ` Илья Курдюков 2021-11-20 12:11 ` Dmitry V. Levin 0 siblings, 1 reply; 22+ messages in thread From: Илья Курдюков @ 2021-11-20 12:07 UTC (permalink / raw) To: devel Почему в нормальных системах этот код возвращает 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 делаются костыли с уменьшением количества потоков, вместо того, чтобы наконец исправить устаревшие лимиты в Альте? ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 12:07 ` [devel] [Erlang] ограничение на количество потоков в Альте Илья Курдюков @ 2021-11-20 12:11 ` Dmitry V. Levin 2021-11-20 12:14 ` Anton Farygin 2021-11-20 12:46 ` Илья Курдюков 0 siblings, 2 replies; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-20 12:11 UTC (permalink / raw) To: devel 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 ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 12:11 ` Dmitry V. Levin @ 2021-11-20 12:14 ` Anton Farygin 2021-11-20 15:04 ` Nikolay A. Fetisov 2021-11-20 16:07 ` Dmitry V. Levin 2021-11-20 12:46 ` Илья Курдюков 1 sibling, 2 replies; 22+ messages in thread From: Anton Farygin @ 2021-11-20 12:14 UTC (permalink / raw) To: devel On 20.11.2021 15:11, Dmitry V. Levin wrote: >> Эти ограничения с начала времён не меняли? > Это очень похоже на настраиваемые лимиты со значениями по умолчанию, > определёнными в /etc/security/limits.d/50-defaults.conf > Да, эти умолчания конечно уже устарели и меняются в дистрибутивах. Возможно, их стоит уже расширить и в пакете с умолчаниями. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 12:14 ` Anton Farygin @ 2021-11-20 15:04 ` Nikolay A. Fetisov 2021-11-20 18:15 ` mikhailnov 2021-11-20 16:07 ` Dmitry V. Levin 1 sibling, 1 reply; 22+ messages in thread From: Nikolay A. Fetisov @ 2021-11-20 15:04 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1273 bytes --] В Сб, 20/11/2021 в 15:14 +0300, Anton Farygin пишет: > > ... > Да, эти умолчания конечно уже устарели и меняются в дистрибутивах. > Возможно, их стоит уже расширить и в пакете с умолчаниями. +1, как минимум для серверных систем. Я с этим встретился при использовании непривилегированных контейнеров LXC/LXD, в случае запуска контейнеров с выделением им одного общего диапазона subuid/subgid . Механизм ulimit про namespaces ничего не знает, ограничения в security/limits.d/50-defaults.conf считаются по процессам _всех_ контейнеров. Как итог, можно получить срабатывение ulimit внутри полупустого контейнера на, например, запуск задачи по cron. И править значения nproc при этом приходится и в хост-системе, и во всех контейнерах. -- С уважением, Николай Фетисов [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 858 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 15:04 ` Nikolay A. Fetisov @ 2021-11-20 18:15 ` mikhailnov 2021-11-20 19:07 ` Gleb Fotengauer-Malinovskiy ` (2 more replies) 0 siblings, 3 replies; 22+ messages in thread From: mikhailnov @ 2021-11-20 18:15 UTC (permalink / raw) To: devel 20.11.2021 18:04, Nikolay A. Fetisov пишет: > В Сб, 20/11/2021 в 15:14 +0300, Anton Farygin пишет: >>> ... >> Да, эти умолчания конечно уже устарели и меняются в дистрибутивах. >> Возможно, их стоит уже расширить и в пакете с умолчаниями. > +1, как минимум для серверных систем. > > Я с этим встретился при использовании непривилегированных контейнеров > LXC/LXD, в случае запуска контейнеров с выделением им одного общего > диапазона subuid/subgid . +100500, я года 2 не мог понять, почему в контейнере не работали банальные вещи, например, "su -u user", пока внимательно не посмотрел strace свежим взглядом, да и glebfm@ подсказал. Лимит на кол-во процессов пользователя настолько дикий, что его не хватило в банальном чруте на весьма минималистичной десктопной системе! > Механизм ulimit про namespaces ничего не знает, ограничения в > security/limits.d/50-defaults.conf считаются по процессам _всех_ > контейнеров. Как итог, можно получить срабатывение ulimit внутри > полупустого контейнера на, например, запуск задачи по cron. Почему? cron же пропустит задачу через PAM-стек, а pam_limits выставит лимиты, если, конечно, ему на это хватит прав, а в разной степени непривилегированных контейнерах может не хватить. > И править значения nproc при этом приходится и в хост-системе, > и во всех контейнерах. ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 18:15 ` mikhailnov @ 2021-11-20 19:07 ` Gleb Fotengauer-Malinovskiy 2021-11-21 8:59 ` Nikolay A. Fetisov 2021-11-21 17:46 ` Michael Shigorin 2 siblings, 0 replies; 22+ messages in thread From: Gleb Fotengauer-Malinovskiy @ 2021-11-20 19:07 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1925 bytes --] Hi, On Sat, Nov 20, 2021 at 09:15:03PM +0300, mikhailnov@altlinux.org wrote: > > 20.11.2021 18:04, Nikolay A. Fetisov пишет: > > В Сб, 20/11/2021 в 15:14 +0300, Anton Farygin пишет: > >>> ... > >> Да, эти умолчания конечно уже устарели и меняются в дистрибутивах. > >> Возможно, их стоит уже расширить и в пакете с умолчаниями. > > +1, как минимум для серверных систем. > > > > Я с этим встретился при использовании непривилегированных контейнеров > > LXC/LXD, в случае запуска контейнеров с выделением им одного общего > > диапазона subuid/subgid . > > +100500, я года 2 не мог понять, почему в контейнере не работали банальные вещи, например, "su -u user", пока внимательно не посмотрел strace свежим взглядом, да и glebfm@ подсказал. В припципе, эта проблема хорошо демонстрировала вам, что контейнеры, которые вы запускали были сконфигурированы неправильно ровно потому что к ним применялись одни и те же лимиты. Раньше для решения задачи можно было использовать маппинг uid/gid-ов, а в совсем свежих ядрах (начиная с v5.14-rc1~153^2~2^2~5 [1]) RLIMIT_NPROC стал виртуализирован для разных user_namespace-ов. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=21d1c5e386bc751f1953b371d72cd5b7d9c9e270 -- glebfm [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 18:15 ` mikhailnov 2021-11-20 19:07 ` Gleb Fotengauer-Malinovskiy @ 2021-11-21 8:59 ` Nikolay A. Fetisov 2021-11-21 10:00 ` Dmitry V. Levin 2021-11-21 17:46 ` Michael Shigorin 2 siblings, 1 reply; 22+ messages in thread From: Nikolay A. Fetisov @ 2021-11-21 8:59 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1889 bytes --] В Сб, 20/11/2021 в 21:15 +0300, mikhailnov@ пишет: > 20.11.2021 18:04, Nikolay A. Fetisov пишет: > > ... > > > Механизм ulimit про namespaces ничего не знает, ограничения в > > security/limits.d/50-defaults.conf считаются по процессам _всех_ > > контейнеров. Как итог, можно получить срабатывение ulimit внутри > > полупустого контейнера на, например, запуск задачи по cron. > Почему? cron же пропустит задачу через PAM-стек, а pam_limits > выставит лимиты, ... ... А дальше ядро сосчитает количество процессов данного UID и сравнит с лимитами. А считаются как минимум до текущего в p10 std-def 5.10.72 включительно _все_ процессы без учёта их распределения по namespaces. В результате, имея для примера пару контейнеров с работающими 255 процессами пользователя, в третьем получаем превышение RLIMIT_NPROC. Хотя у контейнеров nproc по-умолчанию 512, а в хост-системе, например, поднят до 1024. Реально у меня это проявилось на двух машинах с где-то 50 контейнерами каждая. Так это поведение известное, хотя и неочевидное. Исправление уже есть, см. https://lkml.org/lkml/2021/2/22/207 - но в наших ядрах как минимум в p10 и ниже этого патча нет. -- С уважением, Николай Фетисов [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 858 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 8:59 ` Nikolay A. Fetisov @ 2021-11-21 10:00 ` Dmitry V. Levin 2021-11-21 11:56 ` Nikolay A. Fetisov 2021-11-21 12:52 ` Alexey Gladkov 0 siblings, 2 replies; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-21 10:00 UTC (permalink / raw) To: devel On Sun, Nov 21, 2021 at 11:59:26AM +0300, Nikolay A. Fetisov wrote: > В Сб, 20/11/2021 в 21:15 +0300, mikhailnov@ пишет: > > 20.11.2021 18:04, Nikolay A. Fetisov пишет: > > > ... > > > > > Механизм ulimit про namespaces ничего не знает, ограничения в > > > security/limits.d/50-defaults.conf считаются по процессам _всех_ > > > контейнеров. Как итог, можно получить срабатывение ulimit внутри > > > полупустого контейнера на, например, запуск задачи по cron. > > Почему? cron же пропустит задачу через PAM-стек, а pam_limits > > выставит лимиты, ... > > ... А дальше ядро сосчитает количество процессов данного UID и сравнит > с лимитами. А считаются как минимум до текущего в p10 std-def 5.10.72 > включительно _все_ процессы без учёта их распределения по namespaces. > В результате, имея для примера пару контейнеров с работающими > 255 процессами пользователя, в третьем получаем превышение > RLIMIT_NPROC. Хотя у контейнеров nproc по-умолчанию 512, > а в хост-системе, например, поднят до 1024. > Реально у меня это проявилось на двух машинах с где-то 50 контейнерами > каждая. > > Так это поведение известное, хотя и неочевидное. Исправление уже есть, > см. https://lkml.org/lkml/2021/2/22/207 - но в наших ядрах как минимум > в p10 и ниже этого патча нет. Серия изменений v5.14-rc1~153^2~2, призванная решить эту проблему, в качестве побочного эффекта позволяет любому непривилегированному пользователю превышать ограничения RLIMIT_NPROC и нескольких других лимитов путём создания userns и переноса в них своей активности. -- ldv ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 10:00 ` Dmitry V. Levin @ 2021-11-21 11:56 ` Nikolay A. Fetisov 2021-11-21 12:09 ` Dmitry V. Levin 2021-11-21 12:52 ` Alexey Gladkov 1 sibling, 1 reply; 22+ messages in thread From: Nikolay A. Fetisov @ 2021-11-21 11:56 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1176 bytes --] В Вс, 21/11/2021 в 13:00 +0300, Dmitry V. Levin пишет: > ... > > Серия изменений v5.14-rc1~153^2~2, призванная решить эту проблему, > в качестве побочного эффекта позволяет любому непривилегированному > пользователю превышать ограничения RLIMIT_NPROC и нескольких других > лимитов путём создания userns и переноса в них своей активности. > Т.е. теперь namespaces могут создавать и обычные пользователи... Проверил на p10 / 5.10.72-std-def-alt1 - можно, на p9 / 5.4.62-std-def-alt1 от пользователя - "unshare failed: Операция не позволена". Хотя, как минимум внутри контейнеров LXC/LXD это не так страшно, есть ещё ограничение по числу процессов в контейнере в целом, и оно успешно срабатывает. -- С уважением, Николай Фетисов [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 858 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 11:56 ` Nikolay A. Fetisov @ 2021-11-21 12:09 ` Dmitry V. Levin 2021-11-21 12:37 ` Nikolay A. Fetisov 0 siblings, 1 reply; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-21 12:09 UTC (permalink / raw) To: ALT Linux Team development discussions On Sun, Nov 21, 2021 at 02:56:05PM +0300, Nikolay A. Fetisov wrote: > В Вс, 21/11/2021 в 13:00 +0300, Dmitry V. Levin пишет: > > ... > > > > Серия изменений v5.14-rc1~153^2~2, призванная решить эту проблему, > > в качестве побочного эффекта позволяет любому непривилегированному > > пользователю превышать ограничения RLIMIT_NPROC и нескольких других > > лимитов путём создания userns и переноса в них своей активности. > > Т.е. теперь namespaces могут создавать и обычные пользователи... > Проверил на p10 / 5.10.72-std-def-alt1 - можно, > на p9 / 5.4.62-std-def-alt1 от пользователя - > "unshare failed: Операция не позволена". Это как раз зависит от положения переключателя /proc/sys/kernel/userns_restrict, см. соседний тред. > Хотя, как минимум внутри контейнеров LXC/LXD это не так страшно, > есть ещё ограничение по числу процессов в контейнере в целом, > и оно успешно срабатывает. Но если внутри контейнера можно создавать userns, то это ограничение, видимо, обходится таким же образом, как и глобальные ограничения? Или что-то препятствует этому? -- ldv ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 12:09 ` Dmitry V. Levin @ 2021-11-21 12:37 ` Nikolay A. Fetisov 2021-11-21 12:55 ` Dmitry V. Levin 0 siblings, 1 reply; 22+ messages in thread From: Nikolay A. Fetisov @ 2021-11-21 12:37 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 2092 bytes --] В Вс, 21/11/2021 в 15:09 +0300, Dmitry V. Levin пишет: > On Sun, Nov 21, 2021 at 02:56:05PM +0300, Nikolay A. Fetisov wrote: > > > > Т.е. теперь namespaces могут создавать и обычные пользователи... > > ... > > Это как раз зависит от положения переключателя > /proc/sys/kernel/userns_restrict, см. соседний тред. > Ну т.е. это уйдёт само при следующей сборке ядра. > > Хотя, как минимум внутри контейнеров LXC/LXD это не так страшно, > > есть ещё ограничение по числу процессов в контейнере в целом, > > и оно успешно срабатывает. > > Но если внутри контейнера можно создавать userns, то это ограничение, > видимо, обходится таким же образом, как и глобальные ограничения? > Или что-то препятствует этому? Для изоляции контейнера используются namespaces. То, что создаётся внутри контейнера - получается следующим уровнем иерархии. Ограничение на число процессов контейнера задаётся в хост-системе через /sys/fs/cgroup/pids/lxc.payload.<ct>/pids.max , и учитывает и процессы создаваемых внутри контейнера namespaces. Отсюда и неочевидность описанного выше срабатывания ограничений RLIMIT_NPROC - при заданном ограничении pids.max в, скажем, 256, и пакетном nproc 512 получение ошибки "fork: retry: Ресурс временно недоступен" оказывается несколько неожиданно. -- С уважением, Николай Фетисов [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 858 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 12:37 ` Nikolay A. Fetisov @ 2021-11-21 12:55 ` Dmitry V. Levin 2021-11-21 13:09 ` Nikolay A. Fetisov 0 siblings, 1 reply; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-21 12:55 UTC (permalink / raw) To: devel On Sun, Nov 21, 2021 at 03:37:19PM +0300, Nikolay A. Fetisov wrote: > В Вс, 21/11/2021 в 15:09 +0300, Dmitry V. Levin пишет: > > On Sun, Nov 21, 2021 at 02:56:05PM +0300, Nikolay A. Fetisov wrote: > > > > > > Т.е. теперь namespaces могут создавать и обычные пользователи... > > > ... > > > > Это как раз зависит от положения переключателя > > /proc/sys/kernel/userns_restrict, см. соседний тред. > > Ну т.е. это уйдёт само при следующей сборке ядра. Если у вас не установлен пакет bubblewrap, конечно. > > > Хотя, как минимум внутри контейнеров LXC/LXD это не так страшно, > > > есть ещё ограничение по числу процессов в контейнере в целом, > > > и оно успешно срабатывает. > > > > Но если внутри контейнера можно создавать userns, то это ограничение, > > видимо, обходится таким же образом, как и глобальные ограничения? > > Или что-то препятствует этому? > > Для изоляции контейнера используются namespaces. То, что создаётся > внутри контейнера - получается следующим уровнем иерархии. > Ограничение на число процессов контейнера задаётся в хост-системе > через /sys/fs/cgroup/pids/lxc.payload.<ct>/pids.max , и учитывает > и процессы создаваемых внутри контейнера namespaces. Т.е. ответ "да", число процессов в контейнере на практике ограничивают другими средствами. Видимо, это имели в виду авторы v5.14-rc1~153^2~2, когда решили в некотором смысле упразднить RLIMIT_NPROC для userns. Видимо, они считали это настолько очевидным, что не стали упоминать об этом в commit message'ах. -- ldv ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 12:55 ` Dmitry V. Levin @ 2021-11-21 13:09 ` Nikolay A. Fetisov 0 siblings, 0 replies; 22+ messages in thread From: Nikolay A. Fetisov @ 2021-11-21 13:09 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 842 bytes --] В Вс, 21/11/2021 в 15:55 +0300, Dmitry V. Levin пишет: > On Sun, Nov 21, 2021 at 03:37:19PM +0300, Nikolay A. Fetisov wrote: > > > ... > > Для изоляции контейнера используются namespaces. > > .... > Т.е. ответ "да", число процессов в контейнере на практике > ограничивают другими средствами. .... Да, и поэтому поведение на текущих ядрах p9/p10, когда RLIMIT_NPROC считает процессы во _всех_ контейнеров, а срабатывает по значению nproc, заданному в _конкретном_ контейнере, оказывается несколько неожиданным. -- С уважением, Николай Фетисов [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 858 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 10:00 ` Dmitry V. Levin 2021-11-21 11:56 ` Nikolay A. Fetisov @ 2021-11-21 12:52 ` Alexey Gladkov 2021-11-21 13:00 ` Dmitry V. Levin 1 sibling, 1 reply; 22+ messages in thread From: Alexey Gladkov @ 2021-11-21 12:52 UTC (permalink / raw) To: ALT Linux Team development discussions On Sun, Nov 21, 2021 at 01:00:38PM +0300, Dmitry V. Levin wrote: > On Sun, Nov 21, 2021 at 11:59:26AM +0300, Nikolay A. Fetisov wrote: > > В Сб, 20/11/2021 в 21:15 +0300, mikhailnov@ пишет: > > > 20.11.2021 18:04, Nikolay A. Fetisov пишет: > > > > ... > > > > > > > Механизм ulimit про namespaces ничего не знает, ограничения в > > > > security/limits.d/50-defaults.conf считаются по процессам _всех_ > > > > контейнеров. Как итог, можно получить срабатывение ulimit внутри > > > > полупустого контейнера на, например, запуск задачи по cron. > > > Почему? cron же пропустит задачу через PAM-стек, а pam_limits > > > выставит лимиты, ... > > > > ... А дальше ядро сосчитает количество процессов данного UID и сравнит > > с лимитами. А считаются как минимум до текущего в p10 std-def 5.10.72 > > включительно _все_ процессы без учёта их распределения по namespaces. > > В результате, имея для примера пару контейнеров с работающими > > 255 процессами пользователя, в третьем получаем превышение > > RLIMIT_NPROC. Хотя у контейнеров nproc по-умолчанию 512, > > а в хост-системе, например, поднят до 1024. > > Реально у меня это проявилось на двух машинах с где-то 50 контейнерами > > каждая. > > > > Так это поведение известное, хотя и неочевидное. Исправление уже есть, > > см. https://lkml.org/lkml/2021/2/22/207 - но в наших ядрах как минимум > > в p10 и ниже этого патча нет. > > Серия изменений v5.14-rc1~153^2~2, призванная решить эту проблему, > в качестве побочного эффекта позволяет любому непривилегированному > пользователю превышать ограничения RLIMIT_NPROC и нескольких других > лимитов путём создания userns и переноса в них своей активности. Дим, твоя фраза в водит в заблуждение. Пользователь внутри userns не может превысить RLIMIT_NPROC из родительского userns. НИкакого превышение невозможно. -- Rgrds, legion ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 12:52 ` Alexey Gladkov @ 2021-11-21 13:00 ` Dmitry V. Levin 2021-11-21 13:15 ` Alexey Gladkov 0 siblings, 1 reply; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-21 13:00 UTC (permalink / raw) To: ALT Linux Team development discussions On Sun, Nov 21, 2021 at 01:52:01PM +0100, Alexey Gladkov wrote: > On Sun, Nov 21, 2021 at 01:00:38PM +0300, Dmitry V. Levin wrote: > > On Sun, Nov 21, 2021 at 11:59:26AM +0300, Nikolay A. Fetisov wrote: > > > В Сб, 20/11/2021 в 21:15 +0300, mikhailnov@ пишет: > > > > 20.11.2021 18:04, Nikolay A. Fetisov пишет: > > > > > ... > > > > > > > > > Механизм ulimit про namespaces ничего не знает, ограничения в > > > > > security/limits.d/50-defaults.conf считаются по процессам _всех_ > > > > > контейнеров. Как итог, можно получить срабатывение ulimit внутри > > > > > полупустого контейнера на, например, запуск задачи по cron. > > > > Почему? cron же пропустит задачу через PAM-стек, а pam_limits > > > > выставит лимиты, ... > > > > > > ... А дальше ядро сосчитает количество процессов данного UID и сравнит > > > с лимитами. А считаются как минимум до текущего в p10 std-def 5.10.72 > > > включительно _все_ процессы без учёта их распределения по namespaces. > > > В результате, имея для примера пару контейнеров с работающими > > > 255 процессами пользователя, в третьем получаем превышение > > > RLIMIT_NPROC. Хотя у контейнеров nproc по-умолчанию 512, > > > а в хост-системе, например, поднят до 1024. > > > Реально у меня это проявилось на двух машинах с где-то 50 контейнерами > > > каждая. > > > > > > Так это поведение известное, хотя и неочевидное. Исправление уже есть, > > > см. https://lkml.org/lkml/2021/2/22/207 - но в наших ядрах как минимум > > > в p10 и ниже этого патча нет. > > > > Серия изменений v5.14-rc1~153^2~2, призванная решить эту проблему, > > в качестве побочного эффекта позволяет любому непривилегированному > > пользователю превышать ограничения RLIMIT_NPROC и нескольких других > > лимитов путём создания userns и переноса в них своей активности. > > Дим, твоя фраза в водит в заблуждение. Пользователь внутри userns не может > превысить RLIMIT_NPROC из родительского userns. НИкакого превышение > невозможно. Я говорю о том, что непривилегированный пользователь с помощью userns может создать процессы, число которых многократно превышает RLIMIT_NPROC. Речь идёт о том, что, насколько я понимаю, при включённом unprivileged userns эффективное значение RLIMIT_NPROC следует умножать на величину 1 + $(cat /proc/sys/user/max_user_namespaces). -- ldv ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 13:00 ` Dmitry V. Levin @ 2021-11-21 13:15 ` Alexey Gladkov 2021-11-21 13:37 ` Dmitry V. Levin 0 siblings, 1 reply; 22+ messages in thread From: Alexey Gladkov @ 2021-11-21 13:15 UTC (permalink / raw) To: ALT Linux Team development discussions On Sun, Nov 21, 2021 at 04:00:16PM +0300, Dmitry V. Levin wrote: > On Sun, Nov 21, 2021 at 01:52:01PM +0100, Alexey Gladkov wrote: > > On Sun, Nov 21, 2021 at 01:00:38PM +0300, Dmitry V. Levin wrote: > > > On Sun, Nov 21, 2021 at 11:59:26AM +0300, Nikolay A. Fetisov wrote: > > > > В Сб, 20/11/2021 в 21:15 +0300, mikhailnov@ пишет: > > > > > 20.11.2021 18:04, Nikolay A. Fetisov пишет: > > > > > > ... > > > > > > > > > > > Механизм ulimit про namespaces ничего не знает, ограничения в > > > > > > security/limits.d/50-defaults.conf считаются по процессам _всех_ > > > > > > контейнеров. Как итог, можно получить срабатывение ulimit внутри > > > > > > полупустого контейнера на, например, запуск задачи по cron. > > > > > Почему? cron же пропустит задачу через PAM-стек, а pam_limits > > > > > выставит лимиты, ... > > > > > > > > ... А дальше ядро сосчитает количество процессов данного UID и сравнит > > > > с лимитами. А считаются как минимум до текущего в p10 std-def 5.10.72 > > > > включительно _все_ процессы без учёта их распределения по namespaces. > > > > В результате, имея для примера пару контейнеров с работающими > > > > 255 процессами пользователя, в третьем получаем превышение > > > > RLIMIT_NPROC. Хотя у контейнеров nproc по-умолчанию 512, > > > > а в хост-системе, например, поднят до 1024. > > > > Реально у меня это проявилось на двух машинах с где-то 50 контейнерами > > > > каждая. > > > > > > > > Так это поведение известное, хотя и неочевидное. Исправление уже есть, > > > > см. https://lkml.org/lkml/2021/2/22/207 - но в наших ядрах как минимум > > > > в p10 и ниже этого патча нет. > > > > > > Серия изменений v5.14-rc1~153^2~2, призванная решить эту проблему, > > > в качестве побочного эффекта позволяет любому непривилегированному > > > пользователю превышать ограничения RLIMIT_NPROC и нескольких других > > > лимитов путём создания userns и переноса в них своей активности. > > > > Дим, твоя фраза в водит в заблуждение. Пользователь внутри userns не может > > превысить RLIMIT_NPROC из родительского userns. НИкакого превышение > > невозможно. > > Я говорю о том, что непривилегированный пользователь с помощью userns > может создать процессы, число которых многократно превышает RLIMIT_NPROC. Нет. Дим, ты не понял этот патчет. При создании userns rlimit_proc (не только он, а все привязанные к пользователю) пользователя записывается в userns как max. При создании процесса проверка лимита происходит рекурсивно вверх по дереву userns и если где-то max превышен, то всё. Ты не сможешь превысить в userns свой собственный rlimit_proc. Этот патч позволяет _уменьшить_ rlimit_proc в одном userns без поломки соседнего userns от такого же пользователя. Например, у тебя rlimit_proc=10 и ты можешь запустить 10 userns с rlimit_proc=1. Но вот 11 таких контейнеров запустить не получится и внутри не получится запустить больше 10 процессов суммарно. > Речь идёт о том, что, насколько я понимаю, при включённом unprivileged userns > эффективное значение RLIMIT_NPROC следует умножать на величину > 1 + $(cat /proc/sys/user/max_user_namespaces). Нет. Ты неправильно понимаешь. -- Rgrds, legion ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-21 13:15 ` Alexey Gladkov @ 2021-11-21 13:37 ` Dmitry V. Levin 0 siblings, 0 replies; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-21 13:37 UTC (permalink / raw) To: devel On Sun, Nov 21, 2021 at 02:15:00PM +0100, Alexey Gladkov wrote: > On Sun, Nov 21, 2021 at 04:00:16PM +0300, Dmitry V. Levin wrote: > > On Sun, Nov 21, 2021 at 01:52:01PM +0100, Alexey Gladkov wrote: > > > On Sun, Nov 21, 2021 at 01:00:38PM +0300, Dmitry V. Levin wrote: > > > > On Sun, Nov 21, 2021 at 11:59:26AM +0300, Nikolay A. Fetisov wrote: > > > > > В Сб, 20/11/2021 в 21:15 +0300, mikhailnov@ пишет: > > > > > > 20.11.2021 18:04, Nikolay A. Fetisov пишет: > > > > > > > ... > > > > > > > > > > > > > Механизм ulimit про namespaces ничего не знает, ограничения в > > > > > > > security/limits.d/50-defaults.conf считаются по процессам _всех_ > > > > > > > контейнеров. Как итог, можно получить срабатывение ulimit внутри > > > > > > > полупустого контейнера на, например, запуск задачи по cron. > > > > > > Почему? cron же пропустит задачу через PAM-стек, а pam_limits > > > > > > выставит лимиты, ... > > > > > > > > > > ... А дальше ядро сосчитает количество процессов данного UID и сравнит > > > > > с лимитами. А считаются как минимум до текущего в p10 std-def 5.10.72 > > > > > включительно _все_ процессы без учёта их распределения по namespaces. > > > > > В результате, имея для примера пару контейнеров с работающими > > > > > 255 процессами пользователя, в третьем получаем превышение > > > > > RLIMIT_NPROC. Хотя у контейнеров nproc по-умолчанию 512, > > > > > а в хост-системе, например, поднят до 1024. > > > > > Реально у меня это проявилось на двух машинах с где-то 50 контейнерами > > > > > каждая. > > > > > > > > > > Так это поведение известное, хотя и неочевидное. Исправление уже есть, > > > > > см. https://lkml.org/lkml/2021/2/22/207 - но в наших ядрах как минимум > > > > > в p10 и ниже этого патча нет. > > > > > > > > Серия изменений v5.14-rc1~153^2~2, призванная решить эту проблему, > > > > в качестве побочного эффекта позволяет любому непривилегированному > > > > пользователю превышать ограничения RLIMIT_NPROC и нескольких других > > > > лимитов путём создания userns и переноса в них своей активности. > > > > > > Дим, твоя фраза в водит в заблуждение. Пользователь внутри userns не может > > > превысить RLIMIT_NPROC из родительского userns. НИкакого превышение > > > невозможно. > > > > Я говорю о том, что непривилегированный пользователь с помощью userns > > может создать процессы, число которых многократно превышает RLIMIT_NPROC. > > Нет. Дим, ты не понял этот патчет. > > При создании userns rlimit_proc (не только он, а все привязанные к > пользователю) пользователя записывается в userns как max. При создании > процесса проверка лимита происходит рекурсивно вверх по дереву userns и > если где-то max превышен, то всё. Ты не сможешь превысить в userns свой > собственный rlimit_proc. > > Этот патч позволяет _уменьшить_ rlimit_proc в одном userns без поломки > соседнего userns от такого же пользователя. Хорошо, если так. В таком случае до этого изменения userns-контейнеров не существовало, а то, что называли userns-контейнерами, было чистым маркетингом. -- ldv ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 18:15 ` mikhailnov 2021-11-20 19:07 ` Gleb Fotengauer-Malinovskiy 2021-11-21 8:59 ` Nikolay A. Fetisov @ 2021-11-21 17:46 ` Michael Shigorin 2 siblings, 0 replies; 22+ messages in thread From: Michael Shigorin @ 2021-11-21 17:46 UTC (permalink / raw) To: devel On Sat, Nov 20, 2021 at 09:15:03PM +0300, mikhailnov@altlinux.org wrote: > Лимит на кол-во процессов пользователя настолько дикий, > что его не хватило в банальном чруте на весьма минималистичной > десктопной системе! Ну это скорее приговор нынешним тенденциям "минимализма", кмк. Но на всякий напомню про pam-limits-desktop, который с 2017 года входит в дистрибутивные профили для десктопов; см. тж. ветку около http://lists.altlinux.org/pipermail/devel/2017-February/202397.html -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 12:14 ` Anton Farygin 2021-11-20 15:04 ` Nikolay A. Fetisov @ 2021-11-20 16:07 ` Dmitry V. Levin 2021-11-20 17:24 ` Andrew A. Vasilyev 1 sibling, 1 reply; 22+ messages in thread From: Dmitry V. Levin @ 2021-11-20 16:07 UTC (permalink / raw) To: ALT Devel discussion list On Sat, Nov 20, 2021 at 03:14:09PM +0300, Anton Farygin wrote: > On 20.11.2021 15:11, Dmitry V. Levin wrote: > >> Эти ограничения с начала времён не меняли? > > Это очень похоже на настраиваемые лимиты со значениями по умолчанию, > > определёнными в /etc/security/limits.d/50-defaults.conf > > > Да, эти умолчания конечно уже устарели и меняются в дистрибутивах. > Возможно, их стоит уже расширить и в пакете с умолчаниями. По идее, RLIMIT_NPROC имеет смысл зависеть от аппаратной конфигурации. -- ldv ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 16:07 ` Dmitry V. Levin @ 2021-11-20 17:24 ` Andrew A. Vasilyev 0 siblings, 0 replies; 22+ messages in thread From: Andrew A. Vasilyev @ 2021-11-20 17:24 UTC (permalink / raw) To: devel [-- Attachment #1.1: Type: text/plain, Size: 643 bytes --] 20.11.2021 19:07, Dmitry V. Levin пишет: > On Sat, Nov 20, 2021 at 03:14:09PM +0300, Anton Farygin wrote: >> Да, эти умолчания конечно уже устарели и меняются в дистрибутивах. >> Возможно, их стоит уже расширить и в пакете с умолчаниями. > > По идее, RLIMIT_NPROC имеет смысл зависеть от аппаратной конфигурации. А вот в pam-limits-desktop всё гораздо лучше: $ fgrep nproc /etc/security/limits.d/90-desktop.conf * soft nproc 4096 * hard nproc 5120 [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [devel] [Erlang] ограничение на количество потоков в Альте 2021-11-20 12:11 ` Dmitry V. Levin 2021-11-20 12:14 ` Anton Farygin @ 2021-11-20 12:46 ` Илья Курдюков 1 sibling, 0 replies; 22+ messages in thread From: Илья Курдюков @ 2021-11-20 12:46 UTC (permalink / raw) To: devel Произведя в спеке сложные вычисления о том сколько потоков создаёт Erlang и сколько разрешено в ulimit и количеством ядер на машине? Так 500+ не хватило на сборку документации в 8 потоков на 32-х ядерной машине. На 4 потока хватило. Они там три пачки потоков scheduler-ов создают, предположительно 3 на количество ядер на машине. On 20.11.2021 19:11, Dmitry V. Levin wrote: > >> http://git.altlinux.org/gears/e/erlang.git >> >> Почему в спеке Erlang делаются костыли с уменьшением количества потоков, >> вместо того, чтобы наконец исправить устаревшие лимиты в Альте? > Пакет должен собираться с любым разумным значением RLIMIT_NPROC, > а не только с авангардным. > > ^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2021-11-21 17:46 UTC | newest] Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-11-20 11:53 ` [devel] [#290158] FAILED del=python-module-yaml Dmitry V. Levin 2021-11-20 12:07 ` [devel] [Erlang] ограничение на количество потоков в Альте Илья Курдюков 2021-11-20 12:11 ` Dmitry V. Levin 2021-11-20 12:14 ` Anton Farygin 2021-11-20 15:04 ` Nikolay A. Fetisov 2021-11-20 18:15 ` mikhailnov 2021-11-20 19:07 ` Gleb Fotengauer-Malinovskiy 2021-11-21 8:59 ` Nikolay A. Fetisov 2021-11-21 10:00 ` Dmitry V. Levin 2021-11-21 11:56 ` Nikolay A. Fetisov 2021-11-21 12:09 ` Dmitry V. Levin 2021-11-21 12:37 ` Nikolay A. Fetisov 2021-11-21 12:55 ` Dmitry V. Levin 2021-11-21 13:09 ` Nikolay A. Fetisov 2021-11-21 12:52 ` Alexey Gladkov 2021-11-21 13:00 ` Dmitry V. Levin 2021-11-21 13:15 ` Alexey Gladkov 2021-11-21 13:37 ` Dmitry V. Levin 2021-11-21 17:46 ` Michael Shigorin 2021-11-20 16:07 ` Dmitry V. Levin 2021-11-20 17:24 ` Andrew A. Vasilyev 2021-11-20 12:46 ` Илья Курдюков
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git