Size: a a a

2020 January 23

GG

George Gaál in DevOps
Алексей А.
Зачем обрабатывать ошибки выделения, если оверкоммит памяти по умолчанию разрешен
не у всех
источник

АА

Алексей А. in DevOps
Это дефолт
источник

AA

Artyom Abramovich in DevOps
😊 еще скажи что lo0nix сам кэш сбрасывает
источник

АА

Алексей А. in DevOps
какой кэш
источник

AA

Artyom Abramovich in DevOps
Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)
источник

ЕО

Евгений Омельченко in DevOps
Artyom Abramovich
😊 еще скажи что lo0nix сам кэш сбрасывает
Вообще при выделении памяти сбрасывает, а ещё служба ядра под это целая есть
источник

AA

Artyom Abramovich in DevOps
ммм, правда?)
источник

ЕО

Евгений Омельченко in DevOps
kswapd называется
источник

ЕО

Евгений Омельченко in DevOps
Любой человек, которой сталкивался с cgroups-зомби, об этом знает
источник

A

Alexander in DevOps
George Gaál
ты только что описал примерно бОльшую половину современного софта
Я знаю :/
источник

A

Alexander in DevOps
Artyom Abramovich
а ты уверен в хадуп стеке, да?
Не очень. Но, в любом случае, лучше сдохший по оом демон, чем испортивший данные или залипший (и потом все равно сдохший).
источник

A

Alexander in DevOps
Алексей А.
Зачем обрабатывать ошибки выделения, если оверкоммит памяти по умолчанию разрешен
Потому что его можно отключить.
источник

A

Alexander in DevOps
Artyom Abramovich
Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo)
Пейджкеш - это не совсем тот кеш, про который ты думаешь. Например, он может быть non-reclaimable (к примеру, в случае с tmpfs, данные которого живут в пейджкеше).
источник

АА

Алексей А. in DevOps
Alexander
Потому что его можно отключить.
Можно и диск с уникальными данными отформатировать, но зачем?
источник

A

Alexander in DevOps
Алексей А.
Можно и диск с уникальными данными отформатировать, но зачем?
Почему ты считаешь отключение оверкоммитмента деструктивным действием?
источник

АА

Алексей А. in DevOps
Alexander
Почему ты считаешь отключение оверкоммитмента деструктивным действием?
1. Большинство приложений не обрабатывают ошибки выделения, это может приводить к неожиданному поведению. 2. Трудно найти оптимальное значение overcommit ratio, хотя это может быть не  проблема не сервере с предсказуемой нагрузкой. - Если выставить большой ratio, то получим тот же эффект, что и при наличии дефолтного оверкоммита, и будет приходить киллер. При низком overcommit ratio просто получим неполную утилизацию физической памяти. - Процессы будуть падать при полупустом свопе или при полупустой памяти.  - Если нужно огараничить память, то лучше использовать контрольные группы и MemoryMax и MemorySwapMax - эти параметры ограничивают физическую память, а не виртуальную, в отличие от случая с запретом оверкоммита.   Еще альтератива - юзерспейсный демон earlyoom - он сначала отправляет SIGTERM, завершая процессы по возможности более корректно
источник

A

Alexander in DevOps
Алексей А.
1. Большинство приложений не обрабатывают ошибки выделения, это может приводить к неожиданному поведению. 2. Трудно найти оптимальное значение overcommit ratio, хотя это может быть не  проблема не сервере с предсказуемой нагрузкой. - Если выставить большой ratio, то получим тот же эффект, что и при наличии дефолтного оверкоммита, и будет приходить киллер. При низком overcommit ratio просто получим неполную утилизацию физической памяти. - Процессы будуть падать при полупустом свопе или при полупустой памяти.  - Если нужно огараничить память, то лучше использовать контрольные группы и MemoryMax и MemorySwapMax - эти параметры ограничивают физическую память, а не виртуальную, в отличие от случая с запретом оверкоммита.   Еще альтератива - юзерспейсный демон earlyoom - он сначала отправляет SIGTERM, завершая процессы по возможности более корректно
Ты же понимаешь, что отключать оом киллер без отключения оверкоммита бессмысленно? Просто будешь вместо sigkill по OOM ловить sigsegv, но при этом с риском отказа ядра. Я-то не против оверкоммита (реальность такова, что большинству программ он нужен). Мой поинт в том, что если уж хочется жить без oom и софт это позволяет, то стоит просто отключить oom-киллер и оверкоммит, а не ныть. При грамотном подходе в отключении оверкоммита ничего страшного нет.
источник

АА

Алексей А. in DevOps
Alexander
Ты же понимаешь, что отключать оом киллер без отключения оверкоммита бессмысленно? Просто будешь вместо sigkill по OOM ловить sigsegv, но при этом с риском отказа ядра. Я-то не против оверкоммита (реальность такова, что большинству программ он нужен). Мой поинт в том, что если уж хочется жить без oom и софт это позволяет, то стоит просто отключить oom-киллер и оверкоммит, а не ныть. При грамотном подходе в отключении оверкоммита ничего страшного нет.
1. Я знаю один способ отключения киллера - panic on oom. Разве есть другие? 2. оом киллер надо не отключать, а вызывать по возможности раньше. Не вызванный киллер - умершая система.  Киллер - это лекарство от смерти. "если уж хочется жить без oom" - то я предпочитаю earlyoom - процессы завершаются по SIGTERM, до дедлоков с зависаниями не доходит дело.
источник

АА

Алексей А. in DevOps
Ограничение оверкоммита не всегда означает отключение киллера - многое еще зависит от overcommit ratio
источник

АА

Алексей А. in DevOps
Еще момент: киллер убивает процесс с наибольшим oom_score - обычно самый жирный. С ограничением оверкоммита упадет не обязатено самый жирный - могут падать и мелкие процессы, если жирный процесс протекает, но при этом обрабатывает ошибки выделения
источник