Pavel
я бы рекомендовал своп, гигов 16-32 на ноде
Roman
зачем?
Тебе же надо память уменьшить
Pavel
без свопа опасно, с ним более-менее ОК будет
Alexander
да, поддерживаю, задумался тоже на тему "а почему я до сих пор со свопом". ведь и правда безопаснее и не надо решать проблему "как сделать так, чтоб отдавало кэш, а не киляло процессы"
Nick
я бы рекомендовал своп, гигов 16-32 на ноде
это очень плохой вариант. Сервер толстый, начнет писаться в своп - закончатся чищенные блоки на ссд. Закончатся блоки - при новых попытках записать все встанет раком. Даже если под это сделать вообще отдельный ссд, я проверял.
Nick
да, intel s3610 тоже встает раком. и s3700
Nick
сильно позже, чем обычные диски, но таки тоже
Nick
если сделать рейд зеркало из двух ссд и на него положить свап - тогда это почти работает. Почти - потому что иногда, хотя уже и редко, оно тоже начинает тупить и тогда снова всё
Nick
в итоге печально, но запускать по крону echo 1 > /proc/sys/vm/drop_caches пока работает лучше всего
Nick
Тебе же надо память уменьшить
дентри у меня на 50 мегабайт. кешед - на 60 гигабайт. толку мне от уменьшения дентри?
Pavel
тогда увы
Nick
cat /proc/meminfo | egrep -i "cache|dirty" Cached: 64354796 kB SwapCached: 0 kB Dirty: 39804 kB
Alexey
поставлю вопрос иначе. Я хочу, чтобы когда памяти нет - отстреливался дисковый кеш, а не запущенные процессы. Как???
Всё ещё не понимаю. Если у тебя нет свопа, то единственное что может "отстреливаться" это заммапленый .text, который и есть cached.
Nick
Всё ещё не понимаю. Если у тебя нет свопа, то единственное что может "отстреливаться" это заммапленый .text, который и есть cached.
а в реальности происходит: [13023247.775976] OOM kill in rage task 127705 (httpd) score 9 in ub 601 [13023247.776060] OOM kill in rage task 125147 (httpd) score 9 in ub 601 [13023247.776145] OOM killer in rage, 16 tasks killed in ub 601 [13023247.776191] Out of memory in UB 601: OOM killed process 127827 (php-fpm56) score 8 vm:930224kB, rss:76348kB, swap:0kB
Alexey
без свопа опасно, с ним более-менее ОК будет
По мне так наоборот - стопящаяся система хуже той что умирает по ООМ время от времени
Nick
и чтобы веселее - cat /proc/user_beancounters дает по нулям failcnt
Nick
ну т.е. это наверное тогда баг опенвз, а не линукса в целом, но мне от этого не легче
Alexey
vm.min_free_kbytes пробовал поднимать? ну или прости госпади vm.compact_memory по крону, если ядро говно
Roman
дентри у меня на 50 мегабайт. кешед - на 60 гигабайт. толку мне от уменьшения дентри?
А dirty? Хотя, там процент от памяти. Но порезать cached никак. Только o_direct или fadvise/madvise
Nick
А dirty? Хотя, там процент от памяти. Но порезать cached никак. Только o_direct или fadvise/madvise
cat /proc/meminfo | egrep -i "cache|dirty" Cached: 64354796 kB SwapCached: 0 kB Dirty: 39804 kB
Roman
Ты странного хочешь от mm
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
ну, оно зависит от того кто просит - если само ядро, то весьма вероятно ему последовательный участок нужен
что-то я логики не понимаю - судя по тому что у меня получилось выше - сжатие сделало хуже - кучу маленьких блоков по 4 килобайта
niko
мы так жаву запускали я помню
niko
с drop_cache по крону
niko
лет 10 назад
niko
у тя ядро тех времен?)
niko
а vm.min_free_kbytes попробовал?
Nick
у тя ядро тех времен?)
типа того. опенвз
Nick
ну выше тут уже обсуждали, vm.min_free_kbytes = 1000000
niko
и что, не свободно столько?
Nick
сейчас не воспроизвести, нагрузка уже спала, днем посмотрю что будет
niko
не вычищается cached?
Nick
и что, не свободно столько?
нагрузка спала, свободно 3 гига
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
Alexey
Угу, но в основном это для админов было чтоб понимать какие куски поисковой базы в памяти, через mincore
Alexey
но можно было и в скрипты которые логи парсят запихивать, чтобы логами cached не смывать
Alexey
(но потом появились cgroup'ы и вся эта магия перестала быть нужной)
Игоревич
Айтишники Урала, на конференции UWDC-2017 в Челябинске в конце мая будет секция по Devops, вдруг кому интересно? Есть чатик конференции, присоединяйтесь: https://t.me/uwdcconf
Вадим
Про UWDC-2017 поддержу. Кстати, если есть интерес в том, чтобы что-то рассказать и получить признание и славу))), пишите мне или Олегу.
G72K
ну на них любая архитектура ложится по большому счёту. с оговоркой, что для некоторых целей дедики дешевле чем инстансы.
не любая. у них сети ущербные- ни мультикаста, ни роутинга нормального. если в основе продукта тесная интеграция с сетями, то взлетает сложно и муторно
Dmitry
Был недавно в Яндексе. Заговорили про sre и devops. В общем оказалось, что sre - это админы, научившиеся программировать, а devops - это программисты, пытающиеся админить.
nvkv
как всё плохо-то
Alexey
ну SRE это изначально програмисты которых заставили админить, не?