История изменений
Исправление
im-0,
(текущая версия)
:
В чём суть проблемы? Скрипт выжирает 30гб озу + 20гб свопа.
Очевидно, в скрипте баг или жутко неоптимальный алгоритм.
При этом машина при работе скрипта становится неюзабельной ВООБЩЕ.
У тебя, считай, кусок HDD или SSD используется вместо оперативной памяти. Даже современные быстрые SSD значительно медленнее оперативной памяти, с этим ничего не поделать.
После отработки скрипта машина все так же неюзабельна. Фаерфокс дохнет. Делаю killall -9 firefox-esr, потом опять запускаю его - запускается 10 минут. Некоторое время работает postgresql autovacuum, но после его отработки системе не легчает. Система некоторое время рассвопливается, но после рассвопливания и освобождения озу ей опять не легчает. Тег в dwm может переключаться 30 секунд. Любое действие - начинает таращить винт(что-то свопит что-то рассвопливает).
Когда системе не хватает памяти для приложений, она не только обычные данные выталкивает в своп, она ещё и убирает закешированные данные (page cache). В этом кеше много чего лежит, включая часто используемые файлы, данные из memory-mapped файлов, включая бинарники и либы всех запущенных приложений.
Так что даже после полного освобождения свопа, систему ещё какое-то время «не отпускает», пока все данные и код снова не попадут в кеши.
Also see https://en.wikipedia.org/wiki/Thrashing_(computer_science).
Если очень хочется, то можно запретить системе выталкивать страницы памяти определённых приложений в своп. Делается это при помощи mlock. Но пользоваться этим надо осторожно, так как многие выделяют память с запасом и используют не всю.
Исходная версия
im-0,
:
В чём суть проблемы? Скрипт выжирает 30гб озу + 20гб свопа.
Очевидно, в скрипте баг или жутко неоптимальный алгоритм.
При этом машина при работе скрипта становится неюзабельной ВООБЩЕ.
У тебя, считай, кусок HDD или SSD используется вместо оперативной памяти. Даже современные быстрые SSD значительно медленнее оперативной памяти, с этим ничего не поделать.
После отработки скрипта машина все так же неюзабельна. Фаерфокс дохнет. Делаю killall -9 firefox-esr, потом опять запускаю его - запускается 10 минут. Некоторое время работает postgresql autovacuum, но после его отработки системе не легчает. Система некоторое время рассвопливается, но после рассвопливания и освобождения озу ей опять не легчает. Тег в dwm может переключаться 30 секунд. Любое действие - начинает таращить винт(что-то свопит что-то рассвопливает).
Когда системе не хватает памяти для приложений, она не только обычные данные выталкивает в своп, она ещё и убирает закешированные данные (page cache). В этом кеше много чего лежит, включая часто используемые файлы, данные из memory-mapped файлов, включая бинарники и либы всех запущенных приложений.
Так что даже после полного освобождения свопа, систему ещё какое-то время «не отпускает», пока все данные и код снова не попадут в кеши.
Also see https://en.wikipedia.org/wiki/Thrashing_(computer_science).
Если очень хочется, то можно запретить системе выталкивать страницы памяти определённых приложений в своп. Делается это при помощи mlock.