Поиск по сайту:
Вслед за автором мудрого речения идет тот, кто впервые его процитировал (Р. Эмерсон).

Что такое ООМ-убийца в Linux?

07.06.2024
Что такое ООМ-убийца в Linux?

В этой статье рассказывается о ООМ-убийце и о том, как он может повлиять на нашу операционную систему Linux.

«Убийца ООМ» — это сокращение от «Убийцы нехватки памяти» и компонент Linux, предназначенный для предотвращения исчерпания оперативной памяти. У ООМ-убийцы есть одна задача, и эта задача состоит в том, чтобы проверить, достаточно ли доступной памяти, и если нет, то выбрать процесс для уничтожения, чтобы освободить немного оперативной памяти. Ситуации с исчерпанной памятью возникают из-за того, что ядро Linux слишком много выделило для своих процессов. В следующих параграфах мы поговорим о чрезмерном выделении памяти, жизненном цикле ООМ-убийцы, о том, как он выбирает, какой процесс следует уничтожить, о сообщениях ООМ-убийцы и т.д.

 

Чрезмерное выделение памяти

Каждый процесс в системе запрашивает блок памяти у ядра. Ядро выделяет памяти больше, чем требуется процессу при запуске. Ядро осознает этот сценарий. Однако он чрезмерно выделяет оперативную память. Это означает, что если в системе 4 ГБ оперативной памяти, ядро может выделить 5 ГБ для всех запущенных процессов, что на 1 ГБ больше установленного предела. Обычно вначале все процессы не используют память, выделенную в их блоках, но через некоторое время они могут использовать всю память. Наступает момент, когда системе не хватает физически доступной оперативной памяти и она не в состоянии обслуживать все процессы.

Читать  Обзор памяти G.Skill Ripjaws S5 DDR5-5200

 

Вызов ООМ-убийцы

В дополнение к предыдущему параграфу мы знаем, что в данный момент на сервере недостаточно оперативной памяти. Следующим будет вызываемый убойщик ООМ. Он проверяет все запущенные процессы, но прежде чем выбрать, какой процесс будет уничтожен, необходимо выполнить пару шагов, которые необходимо проверить:

  • Если есть достаточно места подкачки, значит, у нас не закончилась память (ООМ).
  • Если с момента последнего сбоя прошло более 5 секунд, у нас не закончилась память (ООМ).
  • Наконец, если за последние 5 секунд не произошло 10 сбоев, значит, у нас не закончилась память (ZOMBIE).

 

Если одно из этих условий противоположно, то у нас заканчивается память, и убойщик ООМ выбирает, какой процесс следует убить. Выбор основан на функции select_bad_process(). Он решает, проходя через каждый запущенный процесс и вычисляя, насколько он подходит для уничтожения выбранного процесса, на основе функции badness():

badness_for_task = total_vm_for_task / (sqrt(cpu_time_in_seconds) * sqrt(sqrt(cpu_time_in_minutes)))

 

Приведенную выше формулу можно объяснить простыми словами: функция badness task выбирает процесс, который использует много памяти, но долгое время не выполнялся. Длительно работающие процессы вряд ли вызовут нехватку памяти. Как только эта функция выбирает процесс, «Убийца ООМ» немедленно убивает его.

 

Журнал ООМ-убийц

Когда веб-сайт перестает работать, скорее всего, перестала работать какая-то служба. Нам нужно выяснить, что это за служба и какой процесс, возможно, был убит. Для этого мы можем выполнить следующую команду cat:

cat /var/log/messages | grep "Killed"

 

Читать  Высокая частота переключения контекста и прерываний: как диагностировать и исправить в Linux

В качестве выходных данных мы можем получить сообщение, похожее на это:

Mar 02 14:04:48 host kernel: Out of Memory: Killed process 2574 (mysqld).

 

Это указывает на то, что «ООМ киллер» остановил процесс MySQL из-за нехватки памяти. Вот почему служба MySQL перестала работать и привела к простою нашего веб-сайта. Отключение службы MySQL часто приводит к необратимому повреждению системы баз данных, и мы можем потерять все данные, которые храним. Есть пара шагов, которые мы можем предпринять, чтобы избежать этих сценариев уничтожения процесса MySQL из-за перегрузки памяти. Имейте в виду, что это не рекомендуется. Нам нужно просто обновить сервер, чтобы у нас было больше доступных ресурсов.

Вот и все. Мы объяснили немного больше о ZOMBIE killer и о том, как он влияет на сервер. Конечно, вам не нужно заботиться об этом, когда на вашем сервере не хватает памяти.

PS. Если вам понравился этот пост о ООМ-убийце в Linux, пожалуйста, поделитесь им со своими друзьями в социальных сетях или просто оставьте комментарий в разделе комментариев. Спасибо.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 4,50 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
SilverStone анонсировала несколько машин, ориентированных на искусственный интеллект, ориентированных на…

Спасибо!

Теперь редакторы в курсе.