Pavel
я бы рекомендовал своп, гигов 16-32 на ноде
Roman
зачем?
Тебе же надо память уменьшить
Pavel
без свопа опасно, с ним более-менее ОК будет
Alexander
да, поддерживаю, задумался тоже на тему "а почему я до сих пор со свопом". ведь и правда безопаснее и не надо решать проблему "как сделать так, чтоб отдавало кэш, а не киляло процессы"
Nick
я бы рекомендовал своп, гигов 16-32 на ноде
это очень плохой вариант. Сервер толстый, начнет писаться в своп - закончатся чищенные блоки на ссд. Закончатся блоки - при новых попытках записать все встанет раком. Даже если под это сделать вообще отдельный ссд, я проверял.
Nick
да, intel s3610 тоже встает раком. и s3700
Nick
сильно позже, чем обычные диски, но таки тоже
Nick
если сделать рейд зеркало из двух ссд и на него положить свап - тогда это почти работает. Почти - потому что иногда, хотя уже и редко, оно тоже начинает тупить и тогда снова всё
Alexey
Nick
в итоге печально, но запускать по крону echo 1 > /proc/sys/vm/drop_caches пока работает лучше всего
Pavel
тогда увы
Nick
cat /proc/meminfo | egrep -i "cache|dirty"
Cached: 64354796 kB
SwapCached: 0 kB
Dirty: 39804 kB
Nick
и чтобы веселее - cat /proc/user_beancounters дает по нулям failcnt
Nick
ну т.е. это наверное тогда баг опенвз, а не линукса в целом, но мне от этого не легче
Alexey
vm.min_free_kbytes пробовал поднимать? ну или прости госпади vm.compact_memory по крону, если ядро говно
Alexey
Roman
Roman
Ты странного хочешь от mm
Nick
Nick
Available only when CONFIG_COMPACTION is set и я не знаю как там у опенвз, но включил, посмотрим завтра что будет
Nick
но по описанию - вряд ли оно что-то меняет для моей проблемы
Alexey
ну его нужно переодически дёргать, чтоб он дефрагментировал страницы - результат будет в % cat /proc/buddyinfo
Node 0, zone DMA 0 0 1 1 0 1 1 0 1 1 3
Node 0, zone DMA32 3753 680 591 1152 225 272 254 189 134 96 40
Node 0, zone Normal 147109 87475 46182 19590 8260 3596 1528 644 219 41 1
Node 1, zone Normal 186493 96649 34493 24677 10216 3266 1012 208 9 0 0
Nick
cat /proc/buddyinfo
Node 0, zone DMA 2 0 1 2 1 1 0 0 1 1 3
Node 0, zone DMA32 13322 11257 9427 7666 5884 3872 2154 769 178 30 1
Node 0, zone Normal 546 288 255 32 7 147 4676 1735 0 0 1
Nick
но я что-то затрудняюсь сделать какие-то выводы из этой таблицы
Nick
после сжатия
cat /proc/buddyinfo
Node 0, zone DMA 2 0 1 2 1 1 0 0 1 1 3
Node 0, zone DMA32 166 1165 835 502 1014 971 536 217 54 9 1
Node 0, zone Normal 84126 10184 3030 1086 239 141 85 1075 4 1 1
Nick
но я всегда думал, что аллокатор если что - возьмет несколько кусков, и oom для такого маленького процесса как nginx ну уж никак не должен случаться
Alexey
ну, оно зависит от того кто просит - если само ядро, то весьма вероятно ему последовательный участок нужен
niko
он забирает своп потому что у тебя не хватает памяти на процессы а не на файловый кеш
Nick
niko
мы так жаву запускали я помню
niko
с drop_cache по крону
niko
лет 10 назад
niko
у тя ядро тех времен?)
niko
а vm.min_free_kbytes попробовал?
Nick
Nick
ну выше тут уже обсуждали, vm.min_free_kbytes = 1000000
niko
и что, не свободно столько?
Nick
сейчас не воспроизвести, нагрузка уже спала, днем посмотрю что будет
niko
не вычищается cached?
Nick
niko
я бы предложил обновить ядро нооо
Nick
и это опять же на ноде, внутри контейнера этим не порулить
Nick
да я бы с радостью )
niko
возможно то что ты на ноде правишь игнорируют то чего там контейнеры накешировали)
Nick
дроп кеш - дропает всем
Denis
А мож этот кеш кем то активно юзает и он не может быть вытолкан ?
Nick
дропкеш же выталкивает
Denis
Там же вроде в меминфо анон анрек есть
Nick
ну и да, активно юзается, тысячи сайтов
Denis
Он выталкивает то что рек.
Nick
но после дроп кеша он обратно растет медленно
Denis
А
Denis
Понял
Denis
Беда :(
Nick
днем минут 20 на сервере с 32 гига памяти и около часа на сервере с 128
Roman
Roman
Но надо знать fd
Roman
Ну или какие именно файлы в кеше
Roman
Но все равно это решение не той задачи, кмк
Alexey
лет 10 назад я для пообных говнохаков package'ил vmtouch https://github.com/hoytech/vmtouch/commit/3c8071b67965fa5945904933d051b24a0a9d71d1
Roman
Alexey
Угу, но в основном это для админов было чтоб понимать какие куски поисковой базы в памяти, через mincore
Alexey
но можно было и в скрипты которые логи парсят запихивать, чтобы логами cached не смывать
Alexey
(но потом появились cgroup'ы и вся эта магия перестала быть нужной)
Игоревич
Айтишники Урала, на конференции UWDC-2017 в Челябинске в конце мая будет секция по Devops, вдруг кому интересно?
Есть чатик конференции, присоединяйтесь: https://t.me/uwdcconf
Вадим
Про UWDC-2017 поддержу.
Кстати, если есть интерес в том, чтобы что-то рассказать и получить признание и славу))), пишите мне или Олегу.
G72K
Dmitry
Был недавно в Яндексе. Заговорили про sre и devops. В общем оказалось, что sre - это админы, научившиеся программировать, а devops - это программисты, пытающиеся админить.
nvkv
как всё плохо-то
Игоревич
Alexey
ну SRE это изначально програмисты которых заставили админить, не?