LINUX.ORG.RU

При использовании swap оперативная память не заполняется в первую очередь.

 , , ,


0

1

имеется арч, ядро 5.10.10-zen1-1-zen, i3wm
подключаю свап из файла, настройки sysctl vm/swappiness=0 — однако при ентом почему то иногда свап не освобождается и не используется в первую очередь оперативная память — и swap начинает заполнять в любом случае почти сразу — даже при заполнении оперативной памяти до 20-30%.

как настроить поведение, что бы swap действительно начинал работать когда мне надо?

★★

тебе не надо, свап не для тебя а для системы. системе лучше знать, когда её он нужен

anonymous
()

как настроить поведение, что бы swap действительно начинал работать когда мне надо?

Подключать своп только тогда, когда тебе надо.

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

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

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

аналогично

Некорректная аналогия. Своп - это не диск. Диск - это одно из мест, где может быть своп.

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

Для облегчения души. От рута:

# cat /sys/kernel/debug/zswap/stored_pages # сколько попало в zswap
# cat /sys/kernel/debug/zswap/written_back_pages # сколько ушло на диск
anonymous
()
Ответ на: комментарий от greenman

ну у меня своп в 10 гигов такое вытворяет... в том треде как я понял он всего лишь в 1 гиг и там загвоздка в другом аспекте — там типа чо своп занят на много...
у меня же проблема чо система постоянно юзает ХДД из-за чего подфриживает систему ессесна из-за обработки I/O

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

У тебя проблема в том, что памяти не хватает и все кеши? ,eathf сбрасываются, в которых находится сам код программ (экзешники и динамические библиотеки) и фризится до тех пор пока код загрузится и продолжит работу. А своп у тебя, как выяснилось, уже кешируется zswap и на диск уходит только 0.01% свопа. Не на то жалуешся, тебе наоборот надо максимально (зет)свопаться, чтобы кеши не сбрасывались. Или просто купить еще памяти и ssd.

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

У тебя проблема в том, что памяти не хватает и все кеши? ,eathf сбрасываются, в которых находится сам код программ (экзешники и динамические библиотеки) и фризится до тех пор пока код загрузится и продолжит работу.

все верно — по ентому надо сделать чо бы не скидывалося...

просто тут такая весчь — когда запускаю прогу которая многа жрет — когда памяти занято было до ентого всего 40% оперативки — прога начинает активно грузиться в своп — и енто явно не область в zswap — потому чо лампочка I/O на системнике просто не гаснет в енто время и своп начинает заполняться активно...

Или просто купить еще памяти и ssd.

понятно чо енто идеальный вариант — но сча не имеет выгодного смсла поскольку оперативка ддр3 две по 4гига — всего два слота в материнке — две по 8 гигов стоят почти как ддр4... такая вот пичаль.
в ближайшем будущем планирую другую систему брать на ддр4 уже и с NVME m2 портом на материнке — по ентому не вижу профита сча брать на сата3 ссд...

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

и тут еще одна фигня — в связи с чем и был сделан данный тред — если я запускаю с отключенным свопом — у меня как раз почти под завязку оперативки на все хватает, но иногда уходит в 100% и ессесна енто ожидание ООМ-киллера... оно ппц долгое может быть.

по ентому необходим своп — но что бы он заполнялся только на очень поздних стадиях — ну тоесть под свопом имеется ввиду часть которая замаплена на HDD.

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

уже кешируется zswap и на диск уходит только 0.01% свопа

енто не так — то значение всегда равно шести — оно не правильное или не то обозначает чо подсказывали...
после подключения свопа оно сразу шесть становится и не меняется никогда

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

чтобы кеши не сбрасывались

если подскажешь как сделать что бы не скидывались на диск бинарные данные с кодом программ — буду очень счастлив

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

енто не так

Тебе нельзя помочь. Ты не веришь проверяемым данным, и рассказываешь непроверяемую дичь. Запусти iotop и смотри, что грузит диск во время, когда «горит лампочка на системнике», kswapd* - это своп (вроде, давно не было проблем со свопом).

anonymous
()

Так, читать всю эту портянку ПЦ сложно, так что извиняйте если что то сильно упустил.

Есть 8гб памяти и хдд, памяти не хватает не то чтобы сильно, в пределах 50%. zswap есть, но настройки неизвестны. swappiness=0 но ведёт себя не как отключеный свопинг. И вообще он начинается с 20-30% использованной памяти, хотя это мягко скажем ненормально. Возможно какой нибудь top/htop внезапно покажет, что кеши или разделяемая память взяла и переполнила оперативку? И никто этого не проврил?

Короче диагноз: хрень неведомая. Проверяй не занято ли всё tmpfs или утёкшей разделяемой. Если нет, то сброс всего тюнинга: swappiness на 60, zswap на 10-20% или вообще отключить, а если системд (а он ведь наверняка есть), то cgroup_disable=memory в командную строку ядра при запуске. И вот тогда тесты, править опции по одной и смотреть как повлияет.

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

просто все дело то в том — чо если я отключаю свап вообще — то все норм — оперативка под 100% грузится и все работает н 95% ее загруженности отлично...
но как тока я подключаю свап что бы не упереться в 100% и выполняю все теже задачи — начинаются тупизмы и фризы...
понятно ессесна чо енто из-за того чо страницы скодом скидываются на диск, но почему если оперативка еще свободна и ее многа не занято?

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

Стандартная ситуация - свопинг начинается с 75-80% занятой памяти и «свободной» оперативки поддерживается в районе 10-20%. Которая разумеется не свободная.

Ваше «при заполнении оперативной памяти до 20-30%» - какая то непонятная хрень и где то там есть косяк.

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

Которая разумеется не свободная.

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

прекрасно понимаю, что аллокаторы сча не заполняют сразу память данными, — они лишь запрашивают у ОС потенциально свободную память, поскольку лишь операционка управляет реальным распределением физической памяти. Проги думают чо им доступна вся безграничная память.

но енто не предоставляет ответа на вопрос — почему при запуске проги, которая заполняет памяти на 30-40% от оперативки — сразу начинают скидываться на своп данные при незаполненной даже на половину оперативки?

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

Ну, я уже написал почему - а ХЗ. Надо вывести все настройки на дефолт, отключить всё дополнительное управление памятью, посмотреть сколько занято несбрасываемыми данными кроме памяти приложений и посмотреть как ядро будет свопиться тогда.

kirill_rrr ★★★★★
()
11 июня 2021 г.

забыл отписаться о решении — данная траббла была в zen-ядре — переключился на обычное и все норм заработало.

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

Нулевой своп как раз усиливает нагрузку на диск.

Вот смотри:

Как только возникает ситуация, когда новая вкладка требует больше оперативной памяти, чем доступно, система практически полностью зависает. Вы даже с трудом сможете двигать курсором мыши. Индикатор жёсткого диска будет моргать без остановки

https://www.opennet.ru/opennews/art.shtml?num=51231

То же самое при нулевом свопинес.

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

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

Читай классику: https://habr.com/ru/company/flant/blog/348324/

Если хочешь минимизировать обращение к диску - используй своп на zram (и только на нем) и высокий swappiness (от 100 до 200).

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

система постоянно юзает ХДД из-за чего подфриживает систему

Просто оставлю это здесь: Игра в supertux2 с множественными `tail /dev/zero` в фоне без зависаний

Еще раз: чтоб не подфриживало, ставишь swappiness=150 и swap на zram.

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

Это не отменяет истинности сказанного выше - если не хочешь дёргать диск, используй zram и высокий swappiness.

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