LINUX.ORG.RU

История изменений

Исправление 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.