LINUX.ORG.RU
ФорумTalks

В systemd-journald спустя 6 лет признали проблему избыточной нагрузки на накопители

 , ,


0

2

https://www.opennet.ru/opennews/art.shtml?num=66082.

Разработчики проекта systemd приступили к изучению и устранению давней архитектурной проблемы в компоненте systemd-journald, приводящей к многократному завышению объёма записываемых на диск данных (write amplification) по сравнению с фактическим объёмом логов.

История тянется с марта 2020 года, когда в системе отслеживания ошибок был зарегистрирован отчёт, в котором было продемонстрировано, что генерирование около 500 КБ текстовых логов выливается в более чем 700 МБ физических операций записи на SSD. Разработчики systemd тогда наотрез отказались признавать проблему: мейнтейнеры заявили исследовательские претензии в духе «вы не понимаете, как работают файловые системы», отказались от проведения профилирования и закрыли заявку с вердиктом «not actionable». Комментарии разработчиков собрали сотни отрицательных оценок от пользователей, однако позиция проекта осталась непреклонной.

В начале 2026 года был отправлен повторный отчёт о проблеме, в ходе обсуждения которого независимый разработчик ValdikSS провёл подробное профилирование с использованием изолированных cgroup и loop-устройств, наглядно доказав механизм возникновения проблемы: из-за использования отображаемых в память файлов (mmap) и двоичных хэш-таблиц запись даже одного текстового сообщения размером 750 байт приводит к модификации отпечатков в памяти, вызывая сброс на диск полных 4-килобайтных страниц и генерацию от 50 до 70 КБ итогового ввода/вывода на уровне блочного устройства.

После вчерашнего попадания отчёта о проблеме на главную страницу Hacker News и публикации неопровержимых синтетических тестов мейнтейнеры проекта изменили риторику и начали работу над оптимизацией механизмов сброса кэша и структуры хранения индексов journald. В данном случае разработчики systemd продемонстрировали типичный для корпоративного Open Source подход: критический недочёт в инфраструктурном компоненте игнорировался годами, пока ущерб репутации проекта в сообществе не превысил издержки на его исправление.

★★★★★

Видел тред на первой странице.

kaldeon ★★
()
Ответ на: комментарий от etwrq

Они и без иишки начиная от вяленого и по системд включительно годами фигнёй страдали. А на все критические замечания отвечали банхаммером или игнором. Этот софт всегда так разрабатывался.

Ygor ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Присоединяюсь, а так же поздравляю с написанием кода который обратил пристальное внимание на проблему.

Ygor ★★★★★
()
Ответ на: комментарий от etwrq

ожидаемо -> (-спецы + -иишка) || (ии-слоп)

Ну да, щас удобно всё на иишку сваливать. А ничё что проблема с 2020 висит, когда никакой иишкой ещё не пахло?

yvv1 ★★
()

при этом такое никак не отключить, а вот в системах без системд логирование отключается без проблем

amd_amd ★★★★★
()
Ответ на: комментарий от amd_amd
$ ls -l /var/log/journal/*
total 37828
-rw-r-----+ 1 root systemd-journal 8388608 Jul 23  2025 system.journal
-rw-r-----+ 1 root systemd-journal 8388608 Jul 23  2025 system@137cee3b672e44cfa2a6c595ae396de5-0000000000009e3d-00063a9624ab1920.journal
-rw-r-----  1 root systemd-journal 8388608 Nov  3  2024 system@aa69499394a74d319a4e0737240b3870-0000000000008e9d-000625ff93563bd3.journal
-rw-r-----  1 root systemd-journal 8388608 Jul 23  2025 system@aa69499394a74d319a4e0737240b3870-0000000000009a2c-000625ff9411e70c.journal
-rw-r-----+ 1 root systemd-journal 8388608 Jul 23  2025 user-1000.journal
-rw-r-----+ 1 root systemd-journal 8388608 Jul 23  2025 user-1000@aa69499394a74d319a4e0737240b3870-0000000000009a2b-000625ff94110427.journal
$ ls -l /run/log
total 0
$ cat /etc/systemd/journald.conf.d/journald.conf

[Journal]
Storage=none
#SystemMaxFiles=6
#ForwardToSyslog=no

Внимание на дату файлов, вероятно включал зачем-то…

andytux ★★★★★
()

Вроде всем сразу было понятно, что леня не умеет в логи, а журналд это та самая двухметровая чугуниевая ручка намертво приваренная к неплохому в общем-то разводному ключу.

ya-betmen ★★★★★
()

@ValdikSS, молодец, надавал поджопников :3

А так, прикольно, надо поковыряться и в живую на это поглядеть, если получится

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от amd_amd

Не помню уже (где-то в гугле нарыл, а ноут уже лет 5 не обновляю систему) ) Сейчас у чатгпт спросил говорит лучше не отключать, а перевести на запись в память

/etc/systemd/journald.conf:

[Journal]
Storage=volatile
RuntimeMaxUse=50M
foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

Нет, лучше заменить на нормальный логгер просто (rsyslog).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Не для того её продавливали, чтобы теперь дропать

Manhunt ★★★★★
()
Ответ на: комментарий от Aceler

зачем ты нарядился в birdie?

birdiesh какой-то.

dataman ★★★★★
() автор топика

Тот случай, когда узнал о проблеме под носом от ЛОРа.

seiken ★★★★★
()
Ответ на: комментарий от firkax

Теперь эту чушь дропнут из дистров?

Пофиксят, и когда станет нормально работать, дропнут. Вместо этого напишут новую реализацию с новыми багами. Ну, в общем, как обычно.

Chord ★★★★★
()
Ответ на: комментарий от firkax

Ничего никуда не дропнут. Море скриптов никто не будет переписывать из-за какого-то багфикса…

seiken ★★★★★
()
Ответ на: комментарий от firkax

Неть, просто перестанут использовать mmap налево и направо без нужды

no-dashi-v2 ★★★★
()
Ответ на: комментарий от foror

Причем, что характерно, сам RHEL именно в таком режиме journald и юзает: journald пишет в tmpfs, а rsyslog вычитывает из него и пишет на диск.

С самого начала появления systemd в RHEL7 и поныне.

Что ж, оттестировали на хомячках, теперь в каком-нибудь RHEL11 может полностью перейдут на journald.

bigbit ★★★★★
()

@ValdikSS , я ни в коем случае не умаляю твоих достижений, но не проще ли было бы провести эти опыты в ВМ, и измерять I/O на отдельный диск под /var/log/journal/ ? Для чистоты можно даже бы сделать его в виде LV внутри LVM хоста, и мерить I/O со стороны хоста на блочное устройство.

Хотя возможно, я не понял, в чем фишка, и так не выйдет, в этом случае был бы рад объяснению.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от yvv1

хайпа не было, а иишечка, как минимум в приватно-экспертных вариациях, была с нулевых - это подкаты куртки к научной среде, появление npu/dpu в кремнии как класса устройств, развитие матана.
ну а чем первый кейс не нравится?
+ Ygor

etwrq ★★★★★
()
Ответ на: комментарий от yvv1

это коммерции не было, а ля claude,gemini,etc.

etwrq ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Он решил исключить влияние драйвера фс.

Aceler ★★★★★
()
Ответ на: комментарий от bigbit

Причем, что характерно, сам RHEL именно в таком режиме journald и юзает: journald пишет в tmpfs, а rsyslog вычитывает из него и пишет на диск.

Хммм прикольно Давно хотел так себе сделать - ибо имно это ед. нормальный способ юзать сие передовые возможности, но руки не доходили. А теперь можно будет глянуть как у этих сделано.

vtVitus ★★★★★
()
Ответ на: комментарий от bigbit

RHEL именно в таком режиме journald и юзает

Не именно, там Storage=auto, а не volatile просто добавят каталог /var/log/journal в пакет systemd как в Федоре и всё

yandrey ★★★
()
Ответ на: комментарий от Ygor

Честно говоря, читая issue, в котором резвился birdie, я-бы тоже его послал GTFO. @ValdikSS большое спасибо, за то что потратил время и провёл нормальное исследование, которое и показало наличие и суть достаточно серьёзной проблемы (о чем и просили Птица и о чем прямым текстом написал Лёня, закрывая репорт, который Птиц как обычно скатил в срачЪ).

Но и тут Птицу надо выставить себя обиженкой. Все-то его «буллят и загазлайтят» (с), злобные корпорации скрывают и угнетают, и только посты Reddit и HN всех спасли, хотя и без этого, после нормального репорта, проблему признали.

SkyMaverick ★★★★★
()

Более того, MGLRU защищает mmaped страницы. Кэш журнала, тамим образом, имеет тенденцию удерживаться в RAM вместо отбрасывания. Может вести к более раннему своппингу при нехватке памяти.

hakavlad ★★★
()
Последнее исправление: hakavlad (всего исправлений: 1)
Ответ на: комментарий от yandrey

Не именно, там Storage=auto, а не volatile просто добавят каталог /var/log/journal в пакет systemd как в Федоре и всё

Да, точно, auto. Спасибо.

Но суть от этого не меняется - journald пишет в tmpfs, а rsyslog черех модуль imjournal вычитывает оттуда сообщения и записывает их на диск.

bigbit ★★★★★
()

из-за использования отображаемых в память файлов (mmap)

А это нельзя выключить коротким патчем?

hakavlad ★★★
()
Ответ на: комментарий от SkyMaverick

Но и тут Птицу надо выставить себя обиженкой. Все-то его «буллят и загазлайтят» (с), злобные корпорации скрывают и угнетают, и только посты Reddit и HN всех спасли, хотя и без этого, после нормального репорта, проблему признали.

Исправление некорректной работы Linux с мониторами, использующими технологию DCI-P3 (комментарий)

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от amd_amd

у меня на некоторых машинах Storage=volatile и ForwardToSyslog=yes

не то чтобы я прям очень хотел отключать, но syslog уже был настроен до systemd

sergej ★★★★★
()
Ответ на: комментарий от amd_amd

вот в системах без системд логирование отключается без проблем

СкрипачSystemD не нужен

zanac1
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)