* 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: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
* 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 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 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 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: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: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 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 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
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