The OpenNET Project / Index page

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



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

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

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

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

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

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

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

2. "Facebook открыл код для обработки ситуации нехватки памяти в..."  –1 +/
Сообщение от iPony (?), 20-Июл-18, 13:05 
Вот это годно, и интересно.

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

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

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

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

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

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

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

60. "Facebook открыл код для обработки ситуации нехватки памяти в..."  +2 +/
Сообщение от Michael Shigorinemail (ok), 21-Июл-18, 19:24 
> Под неправильной. Правильные - BSD/MIT, а не это.

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

Ответить | Правка | ^ к родителю #53 | Наверх | Cообщить модератору

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16. "Facebook открыл код для обработки ситуации нехватки памяти в..."  –1 +/
Сообщение от Аноним (26), 20-Июл-18, 15:57 
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?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

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

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

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

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

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

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

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

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

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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


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