LINUX.ORG.RU

Что-то странное с кэшем в Linux-дистрибутивах 2. Своп забивается.

 , , ,


0

2

Сначала всё нормально:

free
              total        used        free      shared  buff/cache   available
Mem:       16395504     2794684    13187396       53548      413424    13371344
Swap:      17035228           0    17035228

Потом делаешь бэкап средсвами vzdump и буфер залезает в swap:
free
              total        used        free      shared  buff/cache   available
Mem:       16395504     2344852      102532       50608    13948120    13819264
Swap:      17035228      427672    16607556

Если ждать достаточно долго, оно и весь своп потратит. Если же отключить swap, то злой oom не приходит и никого не убивает, всё в порядке. Но хотелось бы оставить swap на тот случай, если виртуалки разжиреют и чтоб их не прибивал oom.
Настройки из соседней темы Что-то странное с кэшем в Linux-дистрибутивах ни коим образом не помогают.

Deleted

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

Пробовал 40, 60, 100, 1 и 0 - никакой разницы, буферы спокойно выезжают в своп.

Deleted
()

А не от того ли, что виртуальная машина плотно работает, и надо где-то держать изменения во время дампа?

Avial ★★★★★
()

Вот со всякими дампами и бекапами разговор особый. Установи nocache и вызывай бекап или дамп через него. Например:

nocache vzdump -параметры

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

Нет. На вм вообще ничего интересного не происходит.

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

Не, не помогло. Картина та же - буфер непомерно жиреет и лезет в своп. При том что если своп отключить, то всё работает хорошо.

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

Насколько я понимаю, они ограничивают память самого приложения и никак не влияют на «продукты его жизнедеятельности» в буферах чтения/записи, файловом кеше, в slab’ах/inode’ах ысяких и т.п.

Тут нужен какой-то «garbage collector» уровня системы)

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

Ещё момент. Пропробуйте в процессе дампа или сразу после него сделать

echo 1 > /proc/sys/vm/drop_caches

и потом проверить в cat /proc/meminfo значение строки Inactive(file):

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

Вот пример подобного бага https://bugzilla.redhat.com/show_bug.cgi?id=1411029

chaos_dremel ★★
()

злой oom не приходит и никого не убивает, всё в порядке

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

оно и весь своп потратит

И в чем проблема? Это ухудшает качество жизни?

буфер залезает в swap

В своп лезут анонимные страницы, буфер не может лезть в своп.

Весь мозг мне сломал свом постом.

злой oom не приходит и никого не убивает

оом никого не убивает. Убивает оом киллер. оом киллер убивает оом.

free

Ключик -h не учили добавлять?

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

При том что если своп отключить, то всё работает хорошо.

Ну так работает - не трогай.

буфер непомерно жиреет и лезет в своп

Нет, не буфер лезет.

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

И в чем проблема? Это ухудшает качество жизни?

Да, все io начинает дико тормозить.

Весь мозг мне сломал свом постом.

Извинити.

Ключик -h не учили добавлять?

Приму к сведению, но понять порядок вещей это не мешает.

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

Нет, не буфер лезет.

Возможно у меня проблемы с трактовкой free ?
buff/cache больше значения available это норма ?

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

Бесконечный рост буфера это не норма.

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

Таки баг с кешем, похоже. Если дроп кеш не дропает кеш, то тут никакими параметрами ядра не поможешь. Ядро случаем не старое? И какую ФС используете?

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

Не, дроп кэш этот кэш дропает, но не целиком и своп это естественно не высвобождает.
ФС ext4, ядро 5.3.

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

Что там написано ? Что постоянно занятый своп это норма ?
Я не припомню такого.

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

Понять бы как сказать ядру, что мне буффер в свопе не нужен вот совсем. Буфер в свопе реально контрпродуктивно.

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

Ну вот дропкеш должен освобождать Inactive(file) в ноль. Если этого не происходит, то что-то пошло не так, вот как в баге которую я скинул выше. Собственно в своп залазят реальные данные программ, а не буферы/кеши, но причина этого судя по всему, в том, что буферы/кеши, которые в норме должны удаляться системой вообще без проблем, не могут быть удалены и занимают оперативку, вот в своп данные и уходят.

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

В used показывается память, которая занята с точки зрения ОС (фактически это реальное оперативка занятая программами и их кодом). Бекапы и дампы не хранят информацию из файлов в своей памяти. А кеш/буферы должны легко очищаться системой при необходимости. Только этого не происходит. И даже дроп кеш похоже не помогает(

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

Ну тогда и nocache должен работать. Попробуйте запускать с параметром «-n число»:

nocache -n 2 vzdump

Число можно ставить больше, если надо. Тогда nocache будет пытаться «не кешить» несколько раз подряд при каждом запросе. Иногда помогает.

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

Хоть -n 100500 - не помогает.
Причем такое поведение кэша наблюдается исключительно с vzdump.
Когда кэш наполняется из-за копирования файлов или обычной работы ОС, то он не пытается залезть в своп.

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

https://forum.proxmox.com/threads/proxmox-is-using-swap-with-lot-of-ram-available.41994/page-2

I finally solved the problem, I was using writeback as KVM HDD cache.

Anyway, right now I set it all my KVM HDD cache to No Cache. 3 days has passed without an RAM issue.

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

Собственно вот человек тоже делал скрипт с дропом кешей). Потом докопался, что это из-за выставленного writeback кеша у KVM’ки. Поставил No Cache и проблема ушла.

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

Только этого не происходит.

С чего взял, чтоэто не происходит?

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

Буфер в свопе реально контрпродуктивно.

В свопе нет буферов, перестань нести ахинею.

Дай свои настройки vm.

Свопинес в 10 уже пробовал выставлять? А в единицу?

vfs_cache_pressure в десятку выставлял?

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

Если отключить своп, то во время создания бэкапа я могу запустить ещё 3-4 виртуалки и ничего не дохнет. Что же это тогда такое, если не буфер ?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.