Summary: | systemd-oomd убивает сессию при полной загруженности памяти | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | obidinog <obidinog> | ||||
Component: | systemd | Assignee: | Alexey Shabalin <shaba> | ||||
Status: | REOPENED --- | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | alimektor, arseny, mcpain, shaba, vercha, zerg | ||||
Version: | unstable | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Attachments: |
|
Дополнительно: Вариант 1: 1) Открыть браузер Firefox 2) Открывать вкладки пока не забьется память Результат: Убивается сессия Вариант 2: 1) В консоли ввести $ tail /dev/zero 2)В новом окне запускать пока не забьется память Результат: Убивается сессия Вариант 3: 1)Открыть браузер Chromium 2)Открывать вкладки пока не забьется память Результат: Убивается браузер Chromium (является ожидаемым результатом) (Ответ для obidinog@basealt.ru на комментарий #1) > Результат: Убивается сессия Самоубийство обычно называется crash или падение. Какой конкретно процесс? Прочитал лог, понятно. Дополнительно: Проверено на ВМ Proxmox: workstation-10-x86-64 education-10-x86-64 server-10-x86-64 education-10-x86-64-KDE Сессия прибивается только на платформе kworkstation-10-x86-64. На Education, Education KDE, Workstation - ничего не происходит, ничего не прибивается/не крашется. На Server - работает корректно, прибивается только приложение(загружал систему Firefox'ом) (Ответ для obidinog@basealt.ru на комментарий #4) > Сессия прибивается только на платформе kworkstation-10-x86-64. > На Education, Education KDE, Workstation - ничего не происходит, ничего не > прибивается/не крашется. Убедитесь, что на всех тестируемых системах одинаковое ядро и systemd. Как выяснилось, проверка была на неправильно настроенной системе. Не было пакета systemd-oomd-defaults (Ответ для Sergey V Turchin на комментарий #6) > Как выяснилось, проверка была на неправильно настроенной системе. > Не было пакета systemd-oomd-defaults На стенде systemd-oomd-defaults установлен. > На стенде systemd-oomd-defaults установлен.
Значит, там баг не воспроизводится.
(Ответ для Sergey V Turchin на комментарий #8) > Значит, там баг не воспроизводится. Воспроизводится. Тестирую задание 309623 с версией systemd-249.13-alt1. Делаю четыре последовательных теста с одним общим предусловием: Стенд ===== Воспроизводится стабильно на следующих виртуалках в системе виртуализации Proxmox Virtual Environment: * p10-education-10-x86-64 * p10-education-10-x86-64-kde * p10-kworkstation-10-x86-64 * p10-server-10-x86-64 * p10-workstation-10-x86-64 Реальное железо: ПК ASUS Intel Celeron N3150 (система @dd3f058f894fd7852b39b9cdfc8af1b9@ alt-kworkstation-10.0-install-x86_64.iso) Предусловие =========== Установленные пакеты: # apt-get install -y systemd-oomd-defaults chromium firefox Проверить наличие SWAP (необходим для корректной работы сервиса systemd-oomd): # swapon -s Если значение пустое, то создать SWAP-файл: # fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo "/swapfile none swap sw 0 0" >> /etc/fstab && reboot В параметрах ядра выставить значения ( в конце строки linux) psi=1 mem=2G Проверить и запустить сервис systemd-oom # systemctl start systemd-oomd.service; sleep 5; systemctl status systemd-oomd.service Тест 1 ====== Запустить несколько раз (достаточно трёх) в графической сессии пользователя следующий сценарий: $ zero_start=$(systemd-run --user tail /dev/zero 2>&1 | cut -f "4" -d " ") && \ systemctl status --user ${zero_start} && \ sleep 10 && \ systemctl status --user ${zero_start} Ожидаемый результат ------------------- Сервис вышел с signal=KILL: × run-rd73a64496ef14f82813030efa29d585a.service - /usr/bin/tail /dev/zero Loaded: loaded (/run/user/500/systemd/transient/run-rd73a64496ef14f82813030efa29d585a.service; transient) Transient: yes Active: failed (Result: signal) since Wed 2022-11-23 16:27:13 MSK; 49s ago Process: 3797 ExecStart=/usr/bin/tail /dev/zero (code=killed, signal=KILL) Main PID: 3797 (code=killed, signal=KILL) CPU: 7.645s На KWorkstation вышло уведомление: Процесс /user.slice/user-500.slice/user@500.service/app.slice/run-r560746cf8219456e9c13688829d89580.service был завершён. Причина: memory-used На Education KDE может выйти сообщение об нехватке памяти. Фактический результат --------------------- На виртуалках первый раз отрабатывает согласно ожидаемому поведению, во второй раз systemd-oomd убивает сессию пользователя, в логах сервиса systemd-oomd: Killed /user.slice/user-0.slice/session-5.scope due to memory used (2023297024) / total (2077696000) and swap used (1051398144) / total (1073737728) being more than 90.00% На реальном железе на KWorkstation результат соответствует ожидаемому. Тест 2 ====== В терминале выполнить от рута: # tail /dev/zero Ожидаемый результат ------------------- Сообщение в терминале: Убито Отсутствие падения сессии. Фактический результат --------------------- Ожидаемый результат появляется через раз, обычно systemd-oomd убивает сессию пользователя, в логах сервиса systemd-oomd: Killed /user.slice/user-500.slice/session-4.scope due to memory used (2016489472) / total (2073276416) and swap used (7728721920) / total (8556376064) being more than 90.00% Тест 3 ====== Открыть Firefox. Запустить в терминале следующий сценарий: $ cat > firefox.sh << 'EOF' for i in {1..100} do firefox --new-tab youtube.com sleep 3 done EOF $ chmod +x firefox.sh $ ./firefox.sh Примечание: повторить запуск скрипта пока не отработает systemd-oomd. Примечание 2: можно выбрать в качестве браузера Chromium, результат будет тот же. Ожидаемый результат ------------------- systemd-oomd прервал работу браузера. Появилось уведомление о том, что прервано и причина. Фактический результат --------------------- systemd-oomd прервал работу сессии. В логах следующее сообщение ноя 23 17:15:50 asus-intel-celeron-n3150 systemd-oomd[3122]: Killed /user.slice/user-500.slice/session-4.scope due to memory used (2016489472) / total (2073276416) and swap used (7728721920) / total (8556376064) being more than 90.00% Вывод ===== Из этого можно сделать вывод, что данный сервис (systemd-oomd) отрабатывает через раз, а с браузерами и вовсе не отрабатывает как надо. Переоткрываю, так как воспроизводится и с systemd-249.12-al3. На Workstation K 10.1 воспроизводится? (Ответ для Sergey V Turchin на комментарий #10) > На Workstation K 10.1 воспроизводится? Воспроизводится. Проверено для версий: systemd-249.12-al3 systemd-249.13-alt1 Стабильно воспроизводится на виртуалках. Также заметил при запуске на реальном стенде в терминале Konsole: # tail /dev/zero Выводится уведомление о нехватке памяти сначала для plasmashell, потом для Konsole, после чего systemd-oomd убивает сессию. С заданием на реальном стенде ошибка Killed /user.slice/user-500.slice/session-N.scope ещё реже. Вот пример лога с заданием: # journalctl -b -u systemd-oomd --no-pager ноя 24 12:02:25 auditcraft systemd[1]: Starting Userspace Out-Of-Memory (OOM) Killer... ноя 24 12:02:26 auditcraft systemd[1]: Started Userspace Out-Of-Memory (OOM) Killer. ноя 24 12:03:24 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-r6ce8882a59dc4bd088a0c608140c7958.service due to memory used (1971056640) / total (2073276416) and swap used (1018953728) / total (1073737728) being more than 90.00% ноя 24 12:03:38 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-r0a392b949e0a44f7b0171452a872b66a.service due to memory used (2005454848) / total (2073276416) and swap used (1017479168) / total (1073737728) being more than 90.00% ноя 24 12:03:49 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-rd775104fa34e4e8fbccf99d803d92a4a.service due to memory used (2012405760) / total (2073276416) and swap used (968065024) / total (1073737728) being more than 90.00% ноя 24 12:04:56 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-r8ec21758f626468b8f61764cb9196865.service due to memory used (2012176384) / total (2073276416) and swap used (998649856) / total (1073737728) being more than 90.00% ноя 24 12:05:07 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-re6d8773ccadf403abd00ff6ea6cea2b7.service due to memory used (1996603392) / total (2073276416) and swap used (984805376) / total (1073737728) being more than 90.00% ноя 24 12:05:18 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-rb96ccbc9bd734372bcaba216ffd6f988.service due to memory used (2012725248) / total (2073276416) and swap used (991174656) / total (1073737728) being more than 90.00% ноя 24 12:05:29 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-r569394d56295414e8d7073830b6d81f2.service due to memory used (2009260032) / total (2073276416) and swap used (1011372032) / total (1073737728) being more than 90.00% ноя 24 12:05:41 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/user@500.service/app.slice/run-rb6d2cabc06914e90b25c337e746e15df.service due to memory used (1993711616) / total (2073276416) and swap used (1022730240) / total (1073737728) being more than 90.00% ноя 24 12:05:56 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/session-2.scope due to memory used (2004508672) / total (2073276416) and swap used (974004224) / total (1073737728) being more than 90.00% ноя 24 12:07:52 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/session-7.scope due to memory used (1977479168) / total (2073276416) and swap used (981352448) / total (1073737728) being more than 90.00% ноя 24 12:17:04 auditcraft systemd-oomd[3029]: Killed /user.slice/user-500.slice/session-9.scope due to memory used (2012143616) / total (2073276416) and swap used (987901952) / total (1073737728) being more than 90.00 Так что, считаю, что ошибка актуальна. (Ответ для Evgeny Shesteperov на комментарий #11) > Выводится уведомление о нехватке памяти А сколько всего там памяти? (Ответ для Sergey V Turchin на комментарий #12) > (Ответ для Evgeny Shesteperov на комментарий #11) > > Выводится уведомление о нехватке памяти > А сколько всего там памяти? Согласно предусловию устанавливается ограничение параметром ядра размером 2GB: > В параметрах ядра выставить значения ( в конце строки linux) > psi=1 mem=2G На реальной машине: 8GB RAM, 8GB SWAP Воспроизводится легко, если отключить SWAP по умолчанию и сделать SWAP, как предусловии: > Проверить наличие SWAP (необходим для корректной работы сервиса systemd-oomd): > # swapon -s > Если значение пустое, то создать SWAP-файл: > # fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo "/swapfile none swap sw 0 0" >> /etc/fstab && reboot В итоге получается: 2GB RAM, 1GB SWAP. При 8GB SWAP просто долго ждать при проверке с Chromium/Firefox, пока воспроизведётся (минут 15-20). |
Created attachment 11397 [details] log Платформа: kworkstation-10-x86-64 Стенд: Lenovo-IdeaPad-Gaming-3-15ARH05:AMD Ryzen 5 4600H with Radeon Graphics Пакет: systemd-249.12-al3.x86_64 Шаги: 1)Запустить сервис systemd-oomd 2)Загрузить оперативную память >90% Результат: systemd-oomd убивает сессию Ожидаемый результат: systemd-oomd убивает приложение