Is 'swap off' safe when app is running on production?

My app has several JVMs running in Linux and swap usage is mostly zero. However, sometimes by high traffic or slowness of database, JVMs consume swap memory, which is not recommended. If it happens, my plan is to recycle swap by 'swap off/swap on' without app shutdown at night window.

When I swap off on OS, what happens to processes that consume swap memory? Are they losing allocated memory blocks? Or does the OS move swap memory blocks back to physical memory? I'm asking under the assumption that physical memory has enough free space to take all swap usage.

The reason that I'm searching for recycling swap is because of swap usage behavior; processes are not consuming swap when swap usage is zero, but they start consuming it more and more when swap usage is non-zero even when there are plenty of physical memory available.

My question is dealing with actual practice when a server hits heavy demand and uses swap memory, and never goes back after heavy demand is gone.

2
задан 19 June 2020 в 05:30

1 ответ

Я бы просто доверял GNU / Linux для управления памятью.

Когда требования к памяти высоки, GNU / Linux действительно будет заменять неактивные процессы на память, чтобы увеличить доступную физическую память (RAM) для запущенных процессов и для файлового кэша. Даже если требования к памяти уменьшаются, эта память подкачки не может быть возвращена обратно в ОЗУ, если в этом нет необходимости. Таким образом, доступная память максимальна для процессов, которые действительно нуждаются в ней, и для файловых буферов. Неактивные процессы остаются в режиме подкачки.

Безопасно ли «подкачка», когда приложение работает в рабочем режиме?

Да, даже если не хватило бы ОЗУ для всех операций подкачки. Если рядом с текущими потребностями достаточно ОЗУ, отключение свопа будет успешным. Если не хватает физической памяти, swapoff не будет выполнен успешно, и произошел сбой swapoff: ошибка распределения памяти невозможна. Так что и здесь, благодаря дизайну системы, она остается безопасной.

Однако, опять же: не рекомендуется действовать таким образом: она не обеспечит никакого повышения производительности. Напротив, это временно приведет к уменьшению объема доступной оперативной памяти для запуска процессов и файловых кешей, поскольку часть ее фактически тратится на перераспределение частей в оперативную память, которые в любом случае не использовались / не были необходимы

.
6
ответ дан 19 June 2020 в 21:22

Другие вопросы по тегам:

Похожие вопросы: