From: Alexey Gladkov <legion@altlinux.ru> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] [Erlang] ограничение на количество потоков в Альте Date: Sun, 21 Nov 2021 14:15:00 +0100 Message-ID: <20211121131500.hlgdfikjw6wt66bn@example.org> (raw) In-Reply-To: <20211121130016.GB10220@altlinux.org> 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
next prev parent reply other threads:[~2021-11-21 13:15 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 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 [this message] 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 ` Илья Курдюков
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211121131500.hlgdfikjw6wt66bn@example.org \ --to=legion@altlinux.ru \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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