Ядро Linux не може м'яко обробляти ситуації з нестачею пам'яті

У списку розсилки розробників ядра Linux піднято проблема з обробкою ситуації вичерпання вільної пам'яті в Linux:

Відома проблема, яка дошкуляє безліч людей протягом багатьох років і яку можна відтворити менше, ніж за кілька хвилин на останній версії ядра Linux 5.2.6. Усі параметри ядра встановлені за замовчуванням.

кроки:

  • Завантажуємося з параметром "mem = 4G".
  • Вимикаємо підтримку swap (sudo swapoff -a).
  • Запускаємо будь-який веб-браузер, наприклад, Chrome/Chromium або Firefox.
  • Починаємо відкривати вкладки з сайтами і дивимося, як зменшується обсяг вільної пам'яті.

Щойно виникає ситуація, коли нова вкладка потребує більше оперативної пам'яті, аніж доступно, система практично повністю зависає. Ви навіть насилу зможете рухати курсором миші. Індикатор жорсткого диска моргатиме без зупинки (я не знаю чому). Ви не зможете запустити нові програми або закрити поточні запущені.

Ця маленька криза може тривати хвилини чи довше. Я припускаю, що система не повинна так поводитися. Думаю, щось треба зробити, щоби уникнути таких «зависань».

Я майже впевнений, що можна змінити деякі параметри sysctl для запобігання подібним ситуаціям, але щось підказує, що це можна зробити за умовчанням для всіх, тому що нетехнічні користувачі, зіткнувшись з такою проблемою, просто відмовляться від використання Linux і їм буде не до того, щоб шукати рішення у Google.

В коментарі на Reddit деякі користувачі пропонують увімкнути swap, але це не вирішує проблему, а лише її відсуває і часто посилює. Як можливе рішення в майбутньому може бути залучена з'явилася в ядрі 4.20 і покращена в ядрі 5.2 підсистема PSI (Pressure Stall Information), яка дозволяє аналізувати інформацію про час очікування на отримання різних ресурсів (CPU, пам'ять, введення/виведення). Дана підсистема дає можливість організувати відстеження нестачі пам'яті на ранній стадії, визначати джерело проблем і завершувати неважливі програми, не доводячи до появи ефектів помітних користувачеві.

Джерело: opennet.ru

Додати коментар або відгук