The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Facebook открыл код для обработки ситуации нехватки памяти в..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Facebook открыл код для обработки ситуации нехватки памяти в..."  +/
Сообщение от opennews (??), 20-Июл-18, 13:04 
Facebook опубликовал (https://code.fb.com/production-engineering/open-sourcing-oom... собственную реализацию обработчика нехватки памяти в системе (OOM, Out Of Memory), работающую в пространстве пользователя. Как и представленный (https://www.opennet.ru/opennews/art.shtml?num=48927) в начале месяца проект earlyoom (https://github.com/rfjakob/earlyoom/), разработка Facebook нацелена на более оперативное и выборочное завершение работы процессов, потребляющих слишком много памяти, на стадии до срабатывания OOM-обработчика  ядра Linux. Код oomd написан на языке C++ и поставляется (https://github.com/facebookincubator/oomd) под лицензией GPLv2. Oomd уже используется в инфраструктуре Facebook и хорошо зарекомендовал себя при промышленных нагрузках (в частности, проект позволил почти полностью избавиться от возникновения на серверах длительных livelock-блокировок (https://en.wikipedia.org/wiki/Deadlock#Livelock)).


Проект oomd предоставляет достаточно гибкие настройки, позволяющие определять процессы, которые не следует завершать при любых условиях (например, sshd) или, наоборот, определить второстепенные процессы, которые можно завершить без особого вреда. В привязке к определённым процессам или для всех процессов можно определять параметры интенсивности роста потребления памяти и пороговые значения, при превышении которых в условиях нехватки памяти допускается принудительное завершение работы процессов. Допускается создание различных групп процессов, к которым могут применяться разные правила.


Поддерживается подключение различных модулей для определения нехватки памяти (oomdetector) и завершения процессов (oomkiller).
В процессе работы для мониторинга за потреблением ресурсов используются cgroup2 и подсистема PSI (Pressure Stall Information), несколько дней назад предложенная (https://lkml.org/lkml/2018/7/12/661) для включения в состав ядра Linux. PSI  разработан в Facebook и позволяет проанализировать информацию о времени ожидания получения различных аппаратных ресурсов для определённых задач или наборов процессов в cgroup.


В контексте OOM подсистема PSI позволяет выявить начало возникновения задержек из-за нехватки ресурсов на стадии когда система ещё не находится в критическом состоянии и не начинает интенсивно урезать кэш и вытеснять данные в раздел подкачки. Кроме оценки нагрузки на систему памяти в PSI также учитывается нагрузка на CPU и ввод/вывод. По сути PSI можно рассматривать как более информативный индикатор перегрузки и механизм для отслеживания изменения нагрузки во времени, более точно отражающий реальную ситуацию по сравнению с метрикой LA (Load Average).

Проведённые синтетические тесты показали, что реализация OOM-обработчика в пространстве пользователя продемонстрировала более высокую эффективность и надёжность, по сравнению со штатным OOM killer ядра Linux. Ниже на графиках приведено сравнение oomd и
OOM killer при тестировании постепенного запроса процессом 2 Гб ОЗУ в течение 120 секунд в условиях нехватки памяти (значения выше 120 следует рассматривать как поведение, приводящее к снижению производительности).

URL: https://code.fb.com/production-engineering/open-sourcing-oom.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=48994

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 20-Июл-18, 13:04   +2 +/
Ну вот, а в прошлой новости earlyoom кто-то костылями называл. А оказывается метод вполне годный. Особенно вкусен PSI, удивительно, что раньше никто не додумался такое сделать. Если, что и называть костылём, так это LA, который на многопроцессорных системах бесполезное сферическое состояние в вакууме показывает.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10, #19

2. Сообщение от iPony (?), 20-Июл-18, 13:05   –1 +/
Вот это годно, и интересно.

А то как посмотрел "Как и представленный в начале месяца проект earlyoom" - у меня грива встала от такого плохого кода...

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #13

4. Сообщение от 123 (??), 20-Июл-18, 13:28   –1 +/
Под правильной лицензией.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #7, #8, #53

5. Сообщение от ryoken (ok), 20-Июл-18, 13:29   +/
Что-то сегодня прут новсти про работу с памятью. День что ли такой? :)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #37

6. Сообщение от Тот еще аноним (?), 20-Июл-18, 13:38   +6 +/
Из-за нехватки памяти Facebook открыл код для обработки ситуации нехватки памяти.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9

7. Сообщение от Аноним (7), 20-Июл-18, 13:39   +/
Так предложенная же для включения в состав ядра Linux.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

8. Сообщение от Аноним (8), 20-Июл-18, 13:53   –1 +/
столман считает GPLv2 не бого угодно, тут же столько дыр .. так что стоит писать - "не под той лицензией выпустили!"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

9. Сообщение от Аноним (9), 20-Июл-18, 14:05   +5 +/
Зришь в корень, мой брат от другой матери. Сначала создадут проблему индусо-кодом, а потом изобретают решение для нее. Но, исходная-то проблема жива!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #70

10. Сообщение от нах (?), 20-Июл-18, 14:26   +13 +/
Ну вот, а в прошлой новости earlyoom кто-то костылями называл. А оказывается на таких костылях САМ Пейсбук ковыляет!

поправил, не благодарите.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

11. Сообщение от Аноним (11), 20-Июл-18, 15:08   –1 +/
Сейчас придет Торвальдс и обзовет всех кто разрабатывал все эти костыли.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #27

12. Сообщение от Аноним (12), 20-Июл-18, 15:28   –1 +/
А подводные камни есть?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #35

13. Сообщение от Аноним (26), 20-Июл-18, 15:42   –5 +/
Тем не менее, earlyoom прекрасно справляется со своей задачей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #20

14. Сообщение от Аноним (14), 20-Июл-18, 15:51   –1 +/
Netflix решил проблемы без oom, у них  есть большой спец по прокладке и профилированию.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #28

15. Сообщение от Аноним (14), 20-Июл-18, 15:53   –4 +/
Почему то в FreeBSD с ARC таких проблем нет
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #21, #23, #66

16. Сообщение от Аноним (26), 20-Июл-18, 15:57   –1 +/
Building and installing

Note that oomd requires PSI to function. This kernel feature has not yet been upstreamed (as of 7/18/18).

oomd currently depends on meson, libfolly, and jsoncpp. The dependency on folly will soon be removed (as of 7/18/18).

Можете объяснить что это - PSI, meson, libfolly?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #18, #58

17. Сообщение от Аноним (17), 20-Июл-18, 16:07   +1 +/
Понабрали пхпшников, а потом память течет
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24

18. Сообщение от Аноним (14), 20-Июл-18, 16:12   +/
Psi - xmpp
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

19. Сообщение от Аноним (19), 20-Июл-18, 16:18   +/
У вас, видимо, галлюцинации - вы не можете отличить задачу от её решения, и решения друг от друга. Да, earlyoom костыль. Нет, это не значит что сабж костыль.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #26, #39

20. Сообщение от Аноним (19), 20-Июл-18, 16:18   +2 +/
Earlyoom вообще не справляется. А это очень даже может быть.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #22

21. Сообщение от Аноним (19), 20-Июл-18, 16:19   +2 +/
Нет памяти, нет проблем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

22. Сообщение от Аноним (26), 20-Июл-18, 16:26   –2 +/
>Earlyoom вообще не справляется

Дичь втираешь

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

23. Сообщение от . (?), 20-Июл-18, 16:29   +1 +/
> Почему то в FreeBSD с ARC таких проблем нет

угу, там просто мертво виснет вся система. А люди, имеющие права коммита, уже второй год старательно игнорируют работающее (хотя и частичное) решение. При этом своей квалификации у них нет - вся "работа" - копипаста из апстрима.

Последний раз кто-то даже сжалился, и принудительно назначил еще одного ревьюера...и тишина...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

24. Сообщение от Аноним (14), 20-Июл-18, 16:32   +/
hhvm течет всегда и не только pho но и hacklang
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

25. Сообщение от Аноним (14), 20-Июл-18, 16:36   –1 +/
Вместо open пусть в ядро запишут gc
Ответить | Правка | Наверх | Cообщить модератору

26. Сообщение от Аноним (26), 20-Июл-18, 16:47   –1 +/
Оба - костыли. И оба хороши, так как плзволяют пациенту вылечить баг с плохой обработкой OOM.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

27. Сообщение от Аноним (27), 20-Июл-18, 16:49   +2 +/
пускай чинит ядерный оомк
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #40, #45

28. Сообщение от Cloud (ok), 20-Июл-18, 17:06   +2 +/
Brendan Greg ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #29, #44

29. Сообщение от Аноним (29), 20-Июл-18, 17:15   +/
В точку! 😁
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

30. Сообщение от Аноним (30), 20-Июл-18, 17:22   +12 +/
Странно, что фейсбук не ввел лайки для процессов. Чем больше лайков - тем выше приоритет :)
Ответить | Правка | Наверх | Cообщить модератору

32. Сообщение от vantoo (ok), 20-Июл-18, 17:48   –1 +/
То есть теперь на десктропе будут как на Андроиде закрываться программы, которые давно не использовались?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #33

33. Сообщение от Аноним (26), 20-Июл-18, 18:04   +2 +/
Да, час бездействия - получает SIGKILL.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

35. Сообщение от Вареник (?), 20-Июл-18, 18:29   +9 +/
Ну какие могут быть подводные камни в killянии серверных программ...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

37. Сообщение от Аноним (37), 20-Июл-18, 19:19   +6 +/
День памяти!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

39. Сообщение от Аноним (39), 20-Июл-18, 19:43   +3 +/
Оба костыли. И вообще ЭВМ - набор костылей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

40. Сообщение от Аноним (39), 20-Июл-18, 19:45   –3 +/
Чтобы его починить надо половину ядра перелопатить. Потому что там не один баг и не одна подсистема глючит.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

44. Сообщение от Anonim (??), 20-Июл-18, 23:41   –1 +/
напишите пожалуйста еще ссылки на годные блоги ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

45. Сообщение от Аноним (26), 20-Июл-18, 23:53   +/
Зачем теперь чинить ядро, если уже появились прекрасные костыли^W юзерспейсные предотвратители OOM?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

46. Сообщение от Аноним (26), 20-Июл-18, 23:55   –1 +/
Верно ли, что эта штука не запустится на стабильных дистрибутивах, потому что в них еще не завезли PKI?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #47

47. Сообщение от Аноним (26), 21-Июл-18, 00:13   –1 +/
PSI конечно же я имел в виду.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

49. Сообщение от Аноним (49), 21-Июл-18, 02:00   –2 +/
Мне одному кажется, что проблема не в OOM, а в нерабочем свапе в новых ядрах?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50

50. Сообщение от Аноним (26), 21-Июл-18, 08:23   +1 +/
В насколько новых? В 4.9 все прекрасно свопится.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49

51. Сообщение от Аноне (?), 21-Июл-18, 10:37   –1 +/
Тем временем отлаживал прогу в VS на оффтопике, где цикл уходил в бесконечность - приложение скушало всю память, и, традиционно, система зависла на минут 7, потом очень долго отмораживалась и выбросила наконец-то исключение.
А под линью без свопа просто останавливается, почему-то не убивает процессы.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #52, #55, #62

52. Сообщение от Аноним (26), 21-Июл-18, 10:47   +1 +/
А разгадка проста:

With or without swap it still freezes before the OOM killer gets run automatically. This is really a kernel bug that should be fixed (i.e. run OOM killer earlier, before dropping all disk cache). Unfortunately kernel developers and a lot of other folk fail to see the problem. Common suggestions such as disable/enable swap, buy more RAM, run less processes, set limits etc. do not address the underlying problem that the kernel's low memory handling sucks camel's balls.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #57

53. Сообщение от Аноним (53), 21-Июл-18, 11:14   –3 +/
Под неправильной. Правильные - BSD/MIT, а не это.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #60

55. Сообщение от iPony (?), 21-Июл-18, 12:52   –1 +/
А вот если под линуксом был своп, то уже — пришлось бы делать хард ребут
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #56

56. Сообщение от Аноним (26), 21-Июл-18, 14:12   +/
Alt + SysRq + K обычно хорошо срабатывает (если предварительно включена поддержка).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

57. Сообщение от Аноним (57), 21-Июл-18, 16:36   +1 +/
> А разгадка проста:
> With or without swap it still freezes before the OOM killer gets
> run automatically.

Да ладно. Я без свопа сижу и фриз иногда даже не заметен.
Всего-то нужно vm.pageout_oom_seq выставить на 2-3 вместо 10 по умолчанию.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

58. Сообщение от имя (?), 21-Июл-18, 17:05   +1 +/
Про PSI написано в новости, да и вообще там, откуда ты это скопипастил, есть ссылки на всё.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

60. Сообщение от Michael Shigorinemail (ok), 21-Июл-18, 19:24   +3 +/
> Под неправильной. Правильные - BSD/MIT, а не это.

О, у нас очередной желающий потратить кучу времени и написать вместо глупого комментария что-нить полезное в http://wiki.opennet.ru/LicenseComparison :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #69

62. Сообщение от letsmac (ok), 22-Июл-18, 16:47   +/
Пройтись статическим анализатором по оффтопику?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #63, #65

63. Сообщение от Аноним (26), 22-Июл-18, 17:02   +/
Нет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62

64. Сообщение от Аноним (64), 22-Июл-18, 21:58   +/
> Код oomd написан на языке C++

Фи, как не современно!

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #67

65. Сообщение от Аноне (?), 22-Июл-18, 22:18   +/
Я не за оффтопик. Я про зависон.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62

66. Сообщение от abi (?), 23-Июл-18, 12:18   +/
На FreeBSD все гораздо веселее. У меня дома сервер с виртуалками и, значит, если виртуалка запущена и ничего не делает, то ее память через сутки оказывается целиком в свопе. Покуда своп есть, а свободная память идет под ARC. И, стало быть, виртуалки резко оживают, ARC не успевает сократиться, своп забит, в итоге - OOM.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

67. Сообщение от ымыныны (?), 23-Июл-18, 16:37   +/
Зато очень современно - писать с ошибками.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64

69. Сообщение от Аноним (69), 25-Июл-18, 11:55   –1 +/
Но позвольте, в сравнении нет столбика "правильная лицензия".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60

70. Сообщение от Аноним (70), 13-Янв-21, 12:05   +/
Это называется абстракции :)
И да, любую проблему можно решить абстракциями, кроме проблемы слишком большого числа абстракций :)))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру