LINUX.ORG.RU

Сделать автоматическое очищение swap

 , , , ,


0

1

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

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

Некая программа активно юзает своп, несмотря на то, что оперативки дофига, и она используется в лучшем случае на 20%. Программа фигачит в своп, и как только он заполняется - все зависает. Если закрыть эту программу, то своп не очищается. Мне кажется странным, что в Linux на этот счет не предусмотрено никаких механизмов автоочищения свопа. Почему?

Ну и собственно, как сделать такой механизм руками? Ибо из-за этого свопа система начинает подлагивать, даже если он заполнен на 50%.

Если вы чего-то не знаете, это ещё не означает что этого нет. Данные в свопе будут перезаписаны при необходимости. Почитайте про swappiness, vfs_cache_pressure и вообще про swap.

anonymous ()

Лучше установить swappiness в такое значение, чтобы своп не использовался особо. По умолчанию там какое-то дикое значение, что уже при 40% занятой памяти он начинает что-то делать со свопом.

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

Похоже, лучше это дерьмо вообще отключить, выпилить, взорвать, сжечь напалмом, и залить кислотой, чтоб верняк. Я в соседней теме описал, как это дерьмо отлично неработает, вне зависимости от любых значений swappiness.

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

месье со времен создания swap вы сделали величайшее открытие своих глаз - он нахер не нужен :) а мужики-то не знають...
решение элементарное swapoff и удалить все записи о swap

pfg ★★ ()
Последнее исправление: pfg (всего исправлений: 1)

Видимо, некая программа активно течёт. А zswap не включен случайно? Он у меня постоянно заполнялся непойми чем и переставал выполнять свои функции.

Ну и кроме того, swap внутри виртуалки или снаружи? Если снаружи, ставь swapiness 99%, если внутри, то отключи. Счастья тормозная эмуляция io не принесёт. Virtio ещё ничего, остальное просто хлам. Очевидно, это твой случай.

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

Ничего специально не включал, система kubuntu.

Своп в самой виртуальной машине глючит. На хостовой таких проблем никогда не было, хотя своп там тоже есть, но там он по ограничению swappiness (60) никогда не включается, хотя половина памяти оперативной обычно используется. А в виртуалке своп просто глючное дерьмо и активируется вообще всегда. Вот прямо щас отключаю его.

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

Более того, если swapiness 99 ставить он тоже не будет использоваться. В него отправляется мусор и текучие приложения в первую очередь, остальное в норме заполняется только когда реальной памяти не хватает приложениям.

anonymous ()

Есть виртуалка, в которой постоянно забивается своп.

А сколько Маньяки с сельхоз инструментарием выделяют сегодня памяти под виртуалки, что так свап кушает-с?

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

4 гига выделил, хотя в среднем ест 700-800 мб, не выходит за пределы 1 гига. Но своп включает всегда, даже если swapiness 10. Бестолковый механизм, совершенно неотлажен на использовании в виртуалках, отключил его

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

Взоржал с треда )) А выключить свап религия не позволяет?

Если бы ты не только с треда взоржал, но почитал бы и каменты, то понял бы, что я его отключил. Не отмонтировал на совсем, а выставил swapiness 0. Пока нормально...

Maniac_with_a_saw ()

сделай и всё взлетит,простые вещи- должен знать.

sudo swapoff -a && sudo swapon -a

заодно и это сделай

sudo su

sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches
очистка миниатюр
rm -rvf ~/.cache/thumbnails 

sudo su

systemctl restart systemd-resolved.service
sudo echo "nameserver 127.0.1.1" > /etc/resolv.conf

sudo du -sh /var/cache/apt/archives
sudo apt clean
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
anonymous ()

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

Если так происходит, то скорее всего в программе утечка памяти - память выделяется, в нее что-то записывается и больше не используется. Такие страницы ядро сбрасывает в своп, чтобы ненужные данные не мешали выделять память для дела

Если закрыть эту программу, то своп не очищается.

Это возможно в двух случаях: 1) страницы памяти программы, попавшие в своп, используются и другими процессами, представляя собой shared memory; 2) своп на самом деле использует не тот процесс, который ты убил. Советую посмотреть, например утилитой smem, какие именно процессы «сидят» в свопе

annulen ★★★★★ ()

своп в моем понимании как мусорный контейнер, из которого никогда не вывозят мусор

В GNU/Linux крайне редко очищается swap. Механизм там кривой, и даже пьяная обезьяна может написать лучше, но разработчики ядра даже не чешутся.

mord0d ()