LINUX.ORG.RU
ФорумAdmin

swap постоянно забит

 ,


0

3

На сервере debian почти постоянно забит на 100% swap, хотя память используется на 70% и ни разу не превышала этот порог.
Был давно установлен

vm.swappiness = 10

Но почему некоторые процессы продолжают скидывать в своп данные?

for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n | awk '$3 > 5000'

php-fpm7.0 15939 5080 kB
php-fpm7.0 6023 5080 kB
nginx 12113 5104 kB
php-fpm7.0 6019 5116 kB
php-fpm7.0 6018 5120 kB
php-fpm7.0 6015 5172 kB
php-fpm7.0 6021 5172 kB
php-fpm7.0 6017 5200 kB
php-fpm7.0 6010 5212 kB
php-fpm7.0 5997 5236 kB
php-fpm7.0 6013 5252 kB
php 25432 5288 kB
php-fpm7.0 6022 5304 kB
php-fpm7.0 6020 5308 kB
php-fpm7.0 6016 5356 kB
php-fpm7.0 6025 5804 kB
php-fpm7.0 6031 6308 kB
php-fpm7.0 6026 6456 kB
php 30006 7160 kB
php-fpm7.0 6030 7228 kB
php 31132 7328 kB
nginx 8061 8136 kB
nginx 12112 8204 kB
php-fpm7.0 6028 9252 kB
node 11408 9364 kB
node 7240 11812 kB
containerd 9854 12192 kB
node 8063 12732 kB
mysqld 23504 20824 kB
dockerd 7924 21808 kB
node 12525 35868 kB

★★★★

На сервере debian почти постоянно забит на 100% swap, хотя память используется на 70% и ни разу не превышала этот порог.

Потому и не превышала, потому что в своп падало.

AnDoR ★★★★★
()
Ответ на: комментарий от gobot

Читал я тут про один троян на линукс серверах, особенно на дебиан. Называется вроде Trojan.2paia_PROkladka. Кажись у него похожие симптомы были.

anonymous
()

На сколько мне не изменяет память, свап используется всегда, а не только, когда памяти мало. Туда в частноти уходят старые и редко используемые старицы, даже когда «свободной памяти» куча. А свободной памяти просто не бывает – всё это по большей части кеш и он более вежен, чем пару забытых страниц.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от gobot

А почему бы и не упасть? Пока swappiness не 0, страницы, которые не используются, рано или поздно попадут в своп. Вопрос только во времени — чем ниже swappiness, тем позже это произойдёт. А неиспользуемые страницы есть всегда (например, в любом демоне это весь код до вызова fork).

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

А как же ее чистить и нужно ли чистить своп? Если он полностью заполнен то «неиспользуемые страницы» будут в память помещаться?

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

А как же ее чистить и нужно ли чистить своп?

Никак, да и в свопе они никому не мешают. Ненужно.

Если он полностью заполнен то «неиспользуемые страницы» будут в память помещаться?

Да.

gremlin_the_red ★★★★★
()

А почему я не заметил на ЛОРе кипения по поводу древнего бага ведра, приводящего к зависанию при окончании оперативки, если у тебя нет свопа?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от gremlin_the_red

А неиспользуемые страницы есть всегда (например, в любом демоне это весь код до вызова fork).

Это не попадает в своп. Ибо это примапленный на чтение бинарник, страницы которого будут просто дискардиться, при недостатке памяти.

vodz ★★★★★
()
Ответ на: комментарий от beastie

Ну дурь же... Зачем так делать? На ровном месте устаивать себе iowait... Дичь какая-то.

targitaj ★★★★★
()
Ответ на: комментарий от Eddy_Em

Нет бага, есть не настроенные ОС.

Эффективная борьба с зависаниями по исчерпании памяти? (комментарий)

Учитывая что в виндоус когда память кончается по-настоящзему та тоже зависает перманентно, я думаю можно предполагать что это проблема не решаемая на уровне железа.

anonymous
()
Ответ на: комментарий от anonymous

Читал я тут про один троян на линукс серверах, особенно на дебиан. Называется вроде Trojan.2paia_PROkladka.

Почти поверил, спасибо.

Deleted
()
Ответ на: комментарий от Eddy_Em

А почему я не заметил на ЛОРе кипения по поводу древнего бага ведра

Все сидят на юзерспейсныйх киллерах, и для бугуртам нет причин.

hakavlad ★★★
()
Ответ на: комментарий от anonymous

не настроенные ОС

Как проблему не переименовывай, она никуда не уходит.

Учитывая что в виндоус

Ахренительные истории демеджконтроля. Постоянно наблюдаю на одной машине венду и линукс с загруженной на 100% памятью, венда прекрасно работает (либо убивая программы, либо свопя), когда линукс виснет 100% воспроизводимо.

anonymous
()
Ответ на: комментарий от anonymous

А ещё винда лучше работает когда на системном диске кончилось место. Вот только кто совершенно заслуженно крутится на 70%+ серверов в мире?

kirill_rrr ★★★★★
()
Ответ на: комментарий от Deleted

Ты про earlyoom?

И на нем тоже. Он наиболее известен и есть во многих репах дистров. Кроме него мне известо о еще шести средствах (lmkd для андроид, oomd для серверов, nohang в основном для десктопа, peacemaker https://github.com/temoto/peacemaker и еще пара васянских скриптов с форумов, наприер Время убивать (комментарий))

hakavlad ★★★
()
Ответ на: комментарий от anonymous

Просто очень сложно добиться такого же эффекта в венде. Зато когда ты найдёшь софт, который тебе в этом поможет, у тебя не будет никаких manual oom, только кнопка питания.

anonymous
()

Есть мнение, что работа swappines как настройка активности свопинга немного устарела, где то в районе линейки ядер 2.6. Да, установка в 0 запрещает своп, но суть самой настройки в современных ядрах это балансировка высвобождения страниц кеша и страниц приложений. А на порог свопинга она давным давно никак не влияет. И мой личный опыт сёрфинга по 20 вкладок на пишке с 1Гб озу это подтверждает. Активный свопинг начинается в районе 80% использования памяти приложениями и я видел как этот параметр доходил до 95%, но не выше. И чем он выше, тем больше тормозов, но иногда при этом основные задачи продолжают адекватно выполняться.

Я хз что у вас там крутится, но если оно продолжает выполняться без значительных задержек, то почему бы просто не добавить бесплатного свопа и больше ничего не трогать? Тот же сёрфинг на 20 вкладок может падать до 1,5-2Гб в своп при наличии 1 Гб доступной памяти. И теперь, когда этот своп у меня на ssd, это не вызывает зависаний системы больше чем на 1-2 секунды.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от anonymous

Нет, я предпочитаю сокращать апетиты софта. Ну или тюнинговать своп и систему.

kirill_rrr ★★★★★
()
Ответ на: комментарий от hakavlad

У меня свопится мало, хотя держу zram и swap на SSD. Особо сильных тормозов не замечал. Юзерспейсными киллерами не пользуюсь.

Deleted
()
Ответ на: комментарий от kirill_rrr

Поставьте swappiness 90 и тормозов не будет, совсем. Пока своп внезапно не кончится и всё не зависнет, будет примерно пол секунды среагировать и нажать sysrq+f.

anonymous
()
Ответ на: комментарий от darkenshvein

то есть можно смело выпилить поддержку вирт.памяти из ядра 😉 ?

Наоборот, нет смысла ограничивать оверкоммит.

hakavlad ★★★
()
Ответ на: комментарий от anonymous

Я ставил и 3, и 40, и 60, и 98. И знаете что? Разница минимальна, а порог срабатывания всегда в районе 80% для пишки с 1Гб и 90% для ноута с 7,2гб.

kirill_rrr ★★★★★
()
Ответ на: комментарий от anonymous

Поставьте swappiness 90 и тормозов не будет

врёти, со свопом на HDD тормоза будут в любом случае при выделениях и конкуренции.

hakavlad ★★★
()
Ответ на: комментарий от darkenshvein

Это же виртуальное адресное пространство. Ядро потратит килобайты физической памяти если приложение скажет «хочу гиг виртуальной», но не начнёт там размещать реальных данных.

kirill_rrr ★★★★★
()
Ответ на: комментарий от hakavlad

Начала сброса данных на диск из кеша и памяти приложений в своп.

kirill_rrr ★★★★★
()
Ответ на: комментарий от darkenshvein

Выпилить поддержку? Невозможно в принципе. Смотреть сколько виртуальной памяти заявли себе процесс? Занятие интересное, медитативное, с практической точки зрения бессмысленное.

В htop важна графа RES (кажется резидентная память) и ещё разделяемая, которая входит внутрь резидентной.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

У меня тормозить начинает тогко когда памяти уже заведомо недостаточно.

Допустим, занято 7 из 8, 200 мегабайт в свопе (из 4гб). Тут мы запускаем задачу которая выжирает 6 гигабайт, ядро судорожно начинает выгружать менее важные данные в своп, ввод-вывод начинает чуточку подлагивать (и небольшие задержки на действия пользователя в гуе как следствие), и зависает окончательно, когда не хватило.

Если это задача, которая выделяет себе данные кусочками, которые понадобятся позже (допустим, компиляция и линковка), то всё нормально будет несмотря на активное использование свопа. Ну может видосики будут подлагивать когда оно внезапно начнёт вынимать всё из свопа.

Т.е. всё зависит от задач, но в среднем от высокого значения swappiness вреда нет (если это не база данных с кучей пользователей).

anonymous
()
Ответ на: комментарий от anonymous

Ну это да, вы назвали самый дикий для системы сценарий, когда запас свободной памяти хорошо если 500М, а приложение говорит хочу 6000. Обычно такого всё таки не происходит и свопиться можно до посинения. Например 2х объёма памяти, не считая всяких tmpfs.

kirill_rrr ★★★★★
()
Ответ на: комментарий от anonymous

Только не в vivaldi. Там они в какой то момент активируют что то на всех вкладках и раком встаёт всё.

Да, кстати, другая крайность: 7zip. Он ведь постоянно проходит по всему объёму занятой памяти и вообще не свопится. Если попытаться его свопить, то в своп поляжет всё кроме него, система может наглухо повиснуть на полчаса и лично у меня чаще своп-диск отваливался из за сбоя чем ситуация разррешалась каким либо другим способом.

kirill_rrr ★★★★★
()
Ответ на: комментарий от voltmod

Я отключил, теперь каждый день приходится oom-killer ручками звать. В случайные моменты времени. Какие ещё будут советы?

anonymous
()
Ответ на: комментарий от anonymous

Какие ещё будут советы?

Установи earlyoom для автоматизации ручной работы.

hakavlad ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.