У мене ноутбук Debian (Buster) з 8 ГБ оперативної пам’яті та 16 Гб свопом. Я виконую дуже довге завдання. Це означає, що мій ноутбук був залишений упродовж останніх шести днів, поки він перебігає.
Роблячи це, мені періодично потрібно використовувати свій ноутбук як ноутбук. Це не повинно бути проблемою; довге завдання, пов'язане з введенням / виведенням, працює над матеріалами на жорсткому диску USB і не займає багато оперативної пам'яті (<200 МБ) або процесора (<4%).
Проблема полягає в тому, що коли я повернуся до свого ноутбука через кілька годин, він буде дуже млявим і може зайняти 30 хвилин, щоб повернутися до нормального стану. Це настільки погано, що монітори аварійних зборів позначають їхні програми на заморожених (особливо вікна браузера) і все починає неправильно виходити з ладу.
Дивлячись на системний монітор, 2,5 Гб, що використовується близько половини, переходить на своп. Я підтвердив, що це проблема, видаливши swap space ( swapoff /dev/sda8
). Якщо я залишу його без місця заміни, він повернеться до життя майже миттєво навіть через 24 години. З заміною, це практично цегла, за перші п’ять хвилин залишилось лише шість годин. Я підтвердив, що споживання пам’яті ніколи не перевищує 3 Гб, навіть коли я відсутній.
Я спробував зменшити свопчість ( див. Також: Вікіпедія ) до значень 10
та 0
, але проблема все ще зберігається. Здається, що після дня бездіяльності ядро вважає, що весь графічний інтерфейс більше не потрібен, і витирає його з оперативної пам’яті (замінює його на диск). Завдання, що триває, - читання через величезне дерево файлів і читання кожного файлу. Тому ядро може заплутатися в думці, що кешування допоможе. Але при одночасному переході на 2 ТБ USB HD з ~ 1 мільярдом імен файлів додаткова ГБ оперативної пам’яті не допоможе значною ефективністю. Це дешевий ноутбук з млявим жорстким диском. Він просто не може завантажити дані назад в оперативну пам'ять досить швидко.
Як я можу сказати Linux використовувати просто обмінний простір у надзвичайних ситуаціях? Я не хочу бігати без свопу. Якщо трапиться щось несподіване, а ОС раптом потребує додаткових кількох ГБ, то я не хочу, щоб завдання вбивались, і я вважаю за краще почати використовувати своп. Але на даний момент, якщо я залишаю ввімкнути своп, мій ноутбук просто не можна використовувати, коли мені це потрібно.
Точне визначення "надзвичайної ситуації" може стати предметом дискусій. Але для уточнення того, що я маю на увазі: надзвичайною ситуацією буде те, коли система залишається без іншого варіанту, ніж обміняти або вбити процеси.
Що таке надзвичайна ситуація? - Вам справді треба запитати? ... Сподіваюся, ви ніколи не опинитесь у палаючій будівлі!
Мені неможливо визначити все, що може стати надзвичайною ситуацією в цьому питанні. Але, наприклад, може виникнути надзвичайна ситуація, коли ядро настільки натиснуто на пам'ять, що воно починає вбивати процеси з убивцею OOM . Надзвичайна ситуація НЕ, коли ядро думає, що може покращити продуктивність за допомогою swap.
Остаточне редагування: я прийняв відповідь, яка робить саме те, про що я просив на рівні операційної системи. Майбутні читачі також повинні взяти до відома відповіді, що пропонують рішення на рівні додатків.