Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Buff / cache съедает всю память. каковы возможные значения vm.vfs_cache_pressure  (Прочитано 1909 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн glorsh66

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
На моем сервере установлено проприетарное программное обеспечение, которое включает в себя множество баз данных - postgress, tarantool, Memcached и несколько проприетарных приложений с высокой нагрузкой.
Система ubuntu 16.04 4.15.0.76-generic

Также на той же машине у меня установлена ​​виртуальная машина (quemu / kvm), на которой установлено все то же программное обеспечение, но другая версия (это причина, по которой она установлена ​​на виртуальной машине). гостевая система ubuntu 18.04 5.4.0-84-generic


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

Итак, проблема в том, что через какое-то время вся свободная память уходит в буфер / кеш, и после этого система начинает использовать swap.


Я пытался установить vm.swappiness = 3 по умолчанию было 60 , это как-то помогло, но система работает не очень стабильно, так что это больше похоже на то, что я продлил ее агонию )
Использование свопа приводит к увеличению таймаутов, что, в свою очередь, приводит к неработающему приложению.
По какой-то причине система предпочитает начинать использовать своп, чем очищать cache/buff.


Прочитав еще немного, я обнаружил, что могу вручную очистить cache/buff.
Поэтому я попытался использовать / bin / sync && / bin / echo 3> proc / sys / vm / drop_caches
Я сделал это в задании crontab, которое выполняется каждые два часа для хост-системы и каждые шесть часов для гостевой системы.
Я пробовал это в течение недели, система работает стабильно, я еще не нашел никаких поврежденных файлов.
Я пробовал использовать его на хосте и гостевых машинах.

Безопасно ли использовать / bin / sync && / bin / echo 3> proc / sys / vm / drop_caches ?
Таким образом, источники говорят, что это может привести к потере данных (в основном из-за некоторого времени между sync && echo 3> proc / sys / vm / drop_caches ).



Как связаны vm.swappiness и vm.vfs_cache_pressure ?
Как vm.swappiness работает одинаково для этих версий:
Ubuntu 16.04 4.15.0.76-общий
Ubuntu 18.04 5.4.0-84-общий


Если установлено vm.swappiness = 0 , означает ли это, что система вообще никогда не будет использовать своп и завершит все процессы, если памяти недостаточно?
Я где-то читал, что разработчики ядра Linux изменили поведение vm.swappiness = 0 , начиная с некоторой версии ядра, поэтому, если установлено значение 0, это просто убивает процесс.

Каковы возможные значения для vm.vfs_cache_pressure
В некоторых источниках говорится, что это от 0 до 200.
В разных источниках говорится, что он определяет количество страниц памяти, которые могут быть выделены для баффа / кеша.
Что на самом деле означает vm.vfs_cache_pressure?
Какие возможные значения я могу установить для vm.vfs_cache_pressure?
Поможет ли установка vm.vfs_cache_pressure = 200 решить мою проблему?
есть ли способ полностью запретить использование cache/buff, если это приводит к использованию подкачки?

Какие еще варианты я могу попробовать?
Как я могу увидеть, какие файлы и какие объекты кешируются?

Существуют ли какие-либо другие опции, кроме vm.vfs_cache_pressureи vm.swappiness, которые могут изменить использование, приоритет баффа / кеша?

Идея состоит в том, чтобы не использовать swap, если есть некоторая доступная память (aviable), и отдать приоритет очистке Buff/cache, и только если это невозможно, и только тогда использовать подкачку (чтобы предотвратить завершение процесса) и конечно, не завершайте процессы, если есть доступный своп.
« Последнее редактирование: 09 Ноября 2021, 14:45:36 от glorsh66 »

Dzhoser

  • Гость
Зачем запрещать, то для чего swap был создан и изобретать свой велосипед?

Оффлайн c47

  • Активист
  • *
  • Сообщений: 356
    • Просмотр профиля
(Нажмите, чтобы показать/скрыть)

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6808
  • 20% Cooler
    • Просмотр профиля
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Dzhoser

  • Гость
Кажется мы стали забывать зачем действительно нужен swap и как он работает https://habr.com/ru/company/flant/blog/348324/

Оффлайн glorsh66

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
(Нажмите, чтобы показать/скрыть)

К сожалению модифицировать невозможно. Не увеличить RAM не SSD. Это бы на 99 процентов решило бы проблему, но к сожалению нет возможностей по улучшению.


по поводу этого знаю
http://linuxatemyram.ru/ 

В том то и проблема, что available у меня много.
Но из-за того что заполняется buff/cache начинает использоваться сфоп, и из-за этого появляются тормоза.
Если переодически очищать buff/cache то тормоза не появляются.

Какие значения может принимать vm.vfs_cache_pressure​ ?
И что она вообще значит?

И безопасно ли ставить vm.swappiness в 0? Или тогда система просто будет закрывать приложения.


Dzhoser

  • Гость
Какие значения может принимать vm.vfs_cache_pressure​ ?
И что она вообще значит?
Изучите мою ссылку представленную в придыдущем посте см. Какой должна быть настройка swappiness?

Оффлайн c47

  • Активист
  • *
  • Сообщений: 356
    • Просмотр профиля
Это бы на 99 процентов решило бы проблему
а раньше как это работало? swap начал расходоваться из-за возросшей нагрузки или другие причины? просто борьба со свопом в данном случае - это как борьба с градусником. Если вы видите на градуснике +39.5, то вы можете сбить градусник до 36.6, но температура тела от этого не поменяется. Другими словами вы пытаетесь замести под ковёр проблему, а это очень плохой путь. Необходимо обсудить с заказчиком/клиентами - вы либо приобретаете новый сервер, для балансировки нагрузки, либо уменьшаете нагрузки путём выдачи квот (если такое предусмотрено функционалом), либо убираете часть функционала. Другого пути я лично не вижу.

Оффлайн glorsh66

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Раньше не было виртуозку и соответственно свободной памяти было в два раза больше.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28376
    • Просмотр профиля
Раньше не было виртуозку и соответственно свободной памяти было в два раза больше.
Снести виртуалку, поставить LXC, поднять вторую (а лучше обе) систему в контейнере.
Тогда память будет распределяться не строго "половину я возьму, половину вам", а по потребностям каждого приложения.
При этом желательно выбрать минимальный базовый образ, чтобы накладные расходы были как можно меньше.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн glorsh66

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
А LXC позволяет установить другую версию операционной системы?
И как у него дела с пробросом портов?



With vfs_cache_pressure=1000, it will look for
ten times more freeable objects than there are.
Не совсем понятно как он может искать больше чем тут объектов?


И еще дополнительно:
vm.dirty_bytes, vm.dirty_bytes_ratio, vm.dirty_backgound_bytes, vm.dirty_backgound_ratio он я правильно понимаю регулирует только dirty_pages т.е. кэш для записи?

А как регулировать кэш для чтения?

cat /proc/vmstat | egrep «dirty|writeback» в среднем говорит что nr_dirty 5709 Но не понятно значение nr_dirty_threshold nr_dirty_background_threshlod


Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28376
    • Просмотр профиля
А LXC позволяет установить другую версию операционной системы?
Естественно.
И как у него дела с пробросом портов?
Чо?… Какой нахрен проброс, это ОТДЕЛЬНАЯ СИСТЕМА.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.071 секунд. Запросов: 25.