LINUX.ORG.RU

Ядро Linux получает автоматическое тестирование : KernelCI

 , , ,

Ядро Linux получает автоматическое тестирование : KernelCI

2

2

У ядра Linux есть одно слабое место: плохое тестирование. Одним из главных признаков того, что нас ждут перемены, является то, что KernelCI, среда автоматического тестирования ядра Linux, становится частью проекта Linux Foundation.

На недавней встрече Linux Kernel Plumbers в Лиссабоне, Португалия, одной из самых горячих тем было то, как улучшить и автоматизировать тестирование ядра Linux. Ведущие разработчики Linux объединили свои усилия в рамках одной среды тестирования: KernelCI. Теперь, на Open Source Summit Europe в Лионе (Франция), KernelCI стал проектом Linux Foundation.

>>> Подробности

★★★

Проверено: unfo ()
Последнее исправление: unfo (всего исправлений: 2)
Ответ на: комментарий от mittorn

Вряд ли это поможет с индусскими драйверами или с багофичами вроде повисания при oom/записи на флэшку.

Потому что основные проблемы в общей архитектуре кода.

anonymous
()
Ответ на: комментарий от anonymous

пока все же оно не дотягивает до уровня божественного ядра реактос

anonymous
()
Ответ на: комментарий от anonymous

Sad but true. По хорошему надо выкинуть нафик и переписать с нуля...

Не зря гугель пилит саою фуксию.

beck ★★★★
()
Ответ на: комментарий от beck

Гугель же сказал, что фуксия - просто research песочница новых идей перед их переносом на суровый продуктовый линукс.

snizovtsev ★★★★★
()
Ответ на: комментарий от CryNet

Это в том числе. Ну и куча случаев когда ядро загибается без причины. Например, пару дней назад переключил виртуальную консоль в графический режим процессом который был под отладчиком. Процесс прибил, консоль осталось в графическом режиме. после этого все попытки сделать chvt просто зависают намертво. То есть все случаи когда у меня зависали иксы намертво и не переключалась консоль были не из-за зависания графической системы, а из-за какого-то тупого косяка ломающего chvt.
А так - локапы в ядре можно перечислять вечно. Завис gpu? все процессы которые обращались к нему висят и не реагируют на sigkill. Можно было в конце концов прибить их. Зависло одно из ядер cpu? тоже висим. Других нет чтоль? зачем вообще весить систему при rcu stall? В последнем случае sysrq работает, но не работают даже таймеры, из-за чего на sysrq+o даже не реагирует.
TMM - менеджер памяти DRM тоже колом всё ставит при ошибке. Короче обработка ошибок сводится к тому что повесить всё намертво. Зачем она тогда?

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Ответ на: комментарий от CryNet

меня лично раздражает отсутствие нормальной обработки нехватки ОП

Используй юзерспейсный патч для ядра - earlyoom

anonymous
()
Ответ на: комментарий от CryNet

меня лично раздражает отсутствие нормальной обработки нехватки ОП

Это бай дизайн:

 *  The routines in this file are used to kill a process when
 *  we're seriously out of memory. This gets called from __alloc_pages()
 *  in mm/page_alloc.c when we really run out of memory.

https://github.com/torvalds/linux/blob/master/mm/oom_kill.c

seriously out of memory

Нехватка памяти в юзерспейсе - это еще не seriously. Ядро не считает нужным обрабатывать «несерьезные» OOM.

anonymous
()
Ответ на: комментарий от anonymous

Да, бай дизайн сломали то что раньше замечательно работало.

А потом недавно в сисямдэ костыли-подпорки этой самой проблемы появились.

Совпадение? ...

trynoval
()
Ответ на: комментарий от mittorn

Ядро сейчас это абздец какой-то

Сейчас ядро лучше, чем когда-либо за всю историю человечества. Не нравится 5.3 - используй Linux 0.1, если любишь ретро. Или когда оно, по-твоему, было хорошим?

anonymous
()
Ответ на: комментарий от trynoval

Да, бай дизайн сломали то что раньше замечательно работало.

oom_kill.c особо не менялось. Да и не ломалось ничего: при запуске

tail /dev/zero
OOM killer прекрасно срабатывает. Просто те, кто жалуются на отсутствие киллера, не доводят дело до серьезного OOM.

anonymous
()
Ответ на: комментарий от anonymous

А я мечтаю об интерактивном киллере - чтобы спросить у пользователя кого будем мочить в этот раз. Но увы, такое вряд ли будет...

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

А я мечтаю об интерактивном киллере - чтобы спросить у пользователя кого будем мочить в этот раз

Ваша заявка принята: https://github.com/hakavlad/nohang/issues/58

Проблемы с этим:

1. Вывод окна с диалогом в новом процессе. Zenity жрёт 50 метров памяти, остальные диалоги не столь удобны

2. Что наиболее важно: как и какие процессы заморозить, чтоб память дальше не уменьшалась, пока юзер думает кого убить. SIGKILL не так уж безобиден, некоторые из него некорректно просыпаются.

Но в целом задаща не сложная. Но это будет сыро и костыльно выглядеть.

anonymous
()
Ответ на: комментарий от CryNet

Меня тоже раздражает отсутствие нормально обработки нехватки денег в городе, элоектроэнергии в деревне и воздуха в космосе.

Говорят, это даже как-то взаимосвязано. Динозавры и мамонты вместо того, чтобы нормально обработать недостаток необходимых условий, просто вымерли, что никак нормой не назовешь...

AVL2 ★★★★★
()
Ответ на: комментарий от vertexua

Пруф

Присоединяюсь, где пруфы, уважаемый?!

anonymous
()
Ответ на: комментарий от anonymous

OOM killer прекрасно срабатывает. Просто те, кто жалуются
на отсутствие киллера, не доводят дело до серьезного OOM.

Ага, т.е. вы предлагаете постоянно ожидать всё это время от начала неработоспособности системы, до полного засирания памяти впритык?!

anonymous
()
Ответ на: комментарий от anonymous

Любое, пусть и убого выглядещее решение, если оно реально будет решением и разруливать эту проблему, будет лучше, даже если это мегакостыль!

anonymous
()
Ответ на: комментарий от anonymous

Скорее убогий киллер способен сработать только на академических искусственных примерах, а не на реальных тяжёлых процессах и нагруженной системе.

anonymous
()
Ответ на: комментарий от anonymous

Я тоже немного опешил от увиденного, потом вспомнил, что это ЛОР и вовремя посмотрел на автора поста, вроде отлегло.

anonymous
()
Ответ на: комментарий от anonymous

@mittorn сделал акцент на интерактивности

anonymous
()
Ответ на: комментарий от CryNet

Мысль проста, как мычание. Если памяти не хватает, то никакой «нормальной» обработкой эту проблему не решить. Нужно или оптимизировать ПО, или добавлять память или (возможно) какими-то административными мерами исключить ситуации, приводящие к ее нехватке. А то развелось школоты. Вы еще «нормально» недостаток места на диске обработайте. Фильм-то скачался, а писать некуда, или вовсе отсутствие компьютера обработайте, факиры недоделанные...

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Если памяти не хватает, то никакой «нормальной» обработкой эту проблему не решить

Завершение наименее нужного процесса - это и есть нормальная обработка. Но ядерный киллер не делает даже этого.

И сравнение с выкидыванием из самолета неуместно. Это скорее похоже на потрю хвоста ящерицей, ибо убитый процесс может быть перезапущен.

anonymous
()
Ответ на: комментарий от anonymous

Если процесс не нужен, не нужно его и запускать. А если нужен, то его убийство в общем случае может стать фатальным.

И как ты собрался определять приоритеты, да еще в ядре, где по определению информации от юзерспейса должно быть минимум?

Про самолет я ничего и не говорил. Но надеятся на то, что любой процесс можно перезапустить, это прям очень смело...

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

не нужен

Плеер или вкладка в браузере менее важна, чем иксы или pppd.

по определению информации от юзерспейса должно быть минимум

OOM score там как раз уже есть, но он не особо работает.

anonymous
()
Ответ на: комментарий от anonymous

Плеер или вкладка в браузере менее важна, чем иксы или pppd.

Трудно сказать. И плейер и вкладка в браузере может быть смыслом работы всего компьютера. В ней может идти процесс, ради которого весь этот комп купили и запустили. А pppd может и вовсе не нужен.

Простой пример. У меня телефон 8 ядер, 4 гига оперативы и все такое. Запускаю песню. При переходе с портрета на ландшафт и обратно звук хрипит и заикается. А должно хрипеть все остальное, кроме звука! А оно наоборот, прекрасно работает, хотя мне нужен только звук, который как раз хрипит из за того,что все остальное летает...

OOM score там как раз уже есть, но он не особо работает.

Поэтому и не работает, что информации для его вычисления на этом уровне нет и быть не может.

AVL2 ★★★★★
()
Последнее исправление: AVL2 (всего исправлений: 1)
Ответ на: комментарий от AVL2

Трудно сказать.

Лучше делать хоть что-то, чем вешать всю систему.

Администратору, как ты говоришь, можно дать возможность отключить автоматическое убивание процессов, если ему так нравится висящая система.

anonymous
()
Ответ на: комментарий от anonymous

В юзерспейсе пока ядро колом это может повиснуть. Надо на уровне ядра резервировать память под определённые процессы. Запасные 50 мегабайт которые смогут использовать только иксы и диалог исправят проблему. Разумеется не zenity, а специально написанное приложение. Так же нужна возмодность запретить уходить в swap определённым процессам. Этого тоже нет.

mittorn ★★★★★
()
Ответ на: комментарий от AVL2

Если процесс не нужен, не нужно его и запускать.

Он может стать ненужен, потому что стал течь, если все процессы из-за него встали колом, о какой дальнейшей работе, пусть даже, изначально нужных процессов, может идти речь?

anonymous
()
Ответ на: комментарий от AVL2

Трудно сказать. И плейер и вкладка в браузере
может быть смыслом работы всего компьютера.

А при переполнении какой смысл от этой псевдоработы, если ничего толком не работает, пусть даже и твой нужный процесс всё повесил, его не осталвлять надо, а прибить и разбираться, что это было такое!

anonymous
()
Ответ на: комментарий от AVL2

Приоритеты приложений нужно объявлять в юзерспейсе, но для этого кернел должен предоставлять некий интерфейс, чтобы юзерспейс мог сказать кернелу, что вот этот PID и его потомки важны, а все остальное можешь кильнуть если что.

olelookoe ★★★
() автор топика
Ответ на: комментарий от olelookoe

Приоритеты приложений нужно объявлять в юзерспейсе, но для этого кернел должен предоставлять некий интерфейс, чтобы юзерспейс мог сказать кернелу, что вот этот PID и его потомки важны, а все остальное можешь кильнуть если что.

Вы не поверите - /proc/<PID>/oom_score_adj В ненавистном systemd - из коробки.

MumiyTroll ★★★
()
Ответ на: комментарий от anonymous

nice, ionice, cgroups, oom_score_adj ...? Андроид научился на базе всего этого хозяйства вести себя прилично, но десктоп и сервера это другое. Не готов к плотной дискуссии на эту тему, но на вскидку есть ощущение, что нужны дополнительные механизмы. Но таки да, запрос должны формировать юзерспейсные девелоперы, а они не делают даже того, что делает тот же андроид. Ну а на нет и ничего нет. Все что было нужно тому же андроиду в ядро вошло, так что если даже чего-то сейчас не хватает это вопрос преодолимый, как показывает практика.

olelookoe ★★★
() автор топика
Ответ на: комментарий от olelookoe

Но таки да, запрос должны формировать юзерспейсные девелоперы, а они не делают даже того, что делает тот же андроид.

А что делает андроид, если не секрет?

юзерспейсные девелоперы, а они не делают даже того, что делает тот же андроид

На демо https://youtu.be/PLVWgNrVNlc мы пытаемся повесить систему бесконечным открытием вкладок браузера, но ничего не выходит. Что еще должны делать девелоперы?

нужны дополнительные механизмы

Есть PSI и /proc/meminfo, этого полностью достаточно для успешного киллинга жиробасов вовремя.

hakavlad ★★★
()
Ответ на: комментарий от hakavlad

А что делает андроид, если не секрет?

https://developer.android.com/guide/components/processes-and-threads.html

Что еще должны делать девелоперы?

Ну например. Я, как десктоп юзер, хотел бы иметь возможность «закрепить» наиболее важные для меня процессы ( браузер целиком, страницы браузера, IDE, етц). И\или хотел бы получать предложение закрыть какие-то программы из списка в случае приближения ООМ апокалипсиса. Хотел бы иметь возможность вручную регулировать IO приоритеты. Назначать предустановленные приоритеты различному ПО, до запуска. И прочая и прочая. Да, чисто технически я могу и сейчас гаечки подкрутить. Если на то пошло я могу и хтмл глазами парсить. Но что-то не хочется.

olelookoe ★★★
() автор топика
Ответ на: комментарий от anonymous

Зачем? Он то работает. И пусть работает.

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

Процесс, который запущен и течет, по определению нужен! Потому что раз он течет, а его запускают и запускают, вместо того, чтобы удалить или отключить запуск, значит это прям вот очень нужен!

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

походи по базару, поторгуйся (с)

андроид хоть как-то себя ведет. В сравнении с тем же десктопом, который ведет себя никак, это космос.

olelookoe ★★★
() автор топика
Ответ на: комментарий от olelookoe

Я, как десктоп юзер, хотел бы иметь возможность «закрепить» наиболее важные для меня процессы ( браузер целиком, страницы браузера, IDE, етц).

Закрепить в смысле запретить убийство ООМ киллером? В nohang это уже реализовано - можно скорректировать badness процесса по его имени, exe realpath, cmdline, cgroup и прочим параметрам.

И\или хотел бы получать предложение закрыть какие-то программы из списка в случае приближения ООМ апокалипсиса

Уведомления о нехватке памяти реализованы, можете что-то закрыть самостоятельно, если успеете, см демо выше.

hakavlad ★★★
()
Ответ на: комментарий от olelookoe

В сравнении с десктопом андроид себя ведет ужасно. Жрущее говно, а не система. Даже страшно себе представить такого наркомана, который поставит андроид на десктоп...

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Процесс, который запущен и течет, по определению нужен!

Потому что раз он течет, а его запускают и запускают

while true; do tail /dev/zero; done

- самый нужный процесс по версии ALV2. Он будет течь со скоростью гигабайты св секунду, убиваться ООМ киллером, снова запускаться, и так бесконечно.

hakavlad ★★★
()
Ответ на: комментарий от hakavlad

Закрепить в смысле запретить убийство ООМ киллером? можно скорректировать badness процесса по его имени, exe realpath, cmdline, cgroup и прочим параметрам.

закрепить - это кнопочку «пин» на окошечке нажать. Еще раз - в кишочках поковыряться и гайки покрутить я могу и прямо сейчас. Где вся эта радость на уровне юзер интерфейса? Уже что только не вкрячили в эти всевозможные wm, каких только свистоперделок там нет, а за всем, что дает система, как таковая - добро пожаловать пердолиться в консоль. Я люблю консоль, но и там все можно делать по-человечески, а можно как зубы у проктолога лечить. Чтобы понять что и как нужно делать нужно смотреть сверху, от юзера, а не снизу, от ядра.

olelookoe ★★★
() автор топика
Ответ на: комментарий от AVL2

В сравнении с десктопом андроид себя ведет ужасно. Жрущее говно, а не система.

Если знаешь из каких говна и палок он слеплен, то на результат начинаешь смотреть, как на идеал.

olelookoe ★★★
() автор топика
Ответ на: комментарий от AVL2

Браузеры текут, без них нельзя обойтись, но убивать вкладки - можно. Просто это приходится делать вручную, чтобы сстема не зависла к чертям.

anonymous
()
Ответ на: комментарий от AVL2

Если памяти не хватает, то никакой «нормальной» обработкой эту проблему не решить.

Но свопить можно очень по-разному. Я думаю, ты знаешь это лучше меня.

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

При всей моей любви к Линуксу, иные африканские дистрибутивы при исчерпании памяти подвисают крепче Винды.

Вы еще «нормально» недостаток места на диске обработайте. Фильм-то скачался, а писать некуда, или вовсе отсутствие компьютера обработайте, факиры недоделанные...

qBittorrent отвратительно обрабатывает недостаток места на диске: в бесконечном цикле истерит всплывающими уведомлениями. А системная уведомлялка вместо того, чтобы дать истеричке по щам, терпеливо пересказывает истерику еще полчаса.

Раньше закрывал qBittorrent, убивал уведомлялку, расчищал диск, запускал обе проги заново. Теперь уведомлялка научилась сохранять очередь. ОБЕРЕЖНО ПОКРАЩЕНО.

Bagrov ★★★★★
()
Ответ на: комментарий от hakavlad

Потому, что я среднестатистический хомяк, накатил дефолтную убунту/$дистрибутив_нейм и не доустанавливл ничего из реп, кроме приложений для работы.

anonymous
()
Ответ на: комментарий от hakavlad

Как пример того, что прилично реализовано поверх xen для десктопа - Qubes OS. Да, я могу xen хоть где поднять, но обеспечить такой уровень интеграции это надо будет убить туеву хучу времени, с непредсказуемым результатом. Любой и каждый системный чих должен быть представлен в интерфейсе, иначе его нет. Для подавляющего большинства - нет. Пока нет софта, которые решает проблемы контейнеризации - нет никаких контейнеров, и выхлопа от системных фич, которые были до того, как появились какие-нибудь там докеры, кубернетисы, флатпаки иже с ними - тоже нет. Те полтора землекопа, которые в курсе на какие кнопки нажимать если чо - не в счет.

olelookoe ★★★
() автор топика
Ответ на: комментарий от AVL2

Логика на уровне той, что про динозавров.

anonymous
()
Ответ на: комментарий от anonymous

Браузеры текут, без них нельзя обойтись,
но убивать вкладки - можно.

Да пофиг на вкладки

Просто это приходится делать вручную,
чтобы сстема не зависла к чертям.

Бывает это обнаруживаешь, когда уже система в ауте, и рад бы браузер целиком грохнуть, да проще нажать резет чем что-то другое пытаться дождаться.

anonymous
()
Ответ на: комментарий от Bagrov

Раньше закрывал qBittorrent, убивал уведомлялку, расчищал диск,
запускал обе проги заново.
Теперь уведомлялка научилась сохранять очередь.

Аналогично бывает, дичь какая-то

При всей моей любви к Линуксу, иные
африканские дистрибутивы при исчерпании памяти
подвисают крепче Винды.

Плюсую, на фоне Винды за Африку обидно, пц!

anonymous
()
Ответ на: комментарий от anonymous

Я тоже хомяк и тоже недоумеваю, я бы поставил что надо, более того, я бы даже один раз в конфигах поковырялся, если бы система, по итогу, когда остаётся последних метров 50 памяти, грохала самый толстый процесс! У меня это полюбому браузер или какая-то юзерспейсная некритичная для работы системы шняга, лучше чтобы здохла она, нежели я как залипшую наглухо, в хреновые времена, винду, буду резетить и запускать всё тоже самое, но ещё и с нуля. А так я запущу снова только то, что грохнулось.

anonymous
()
Ответ на: комментарий от anonymous

У меня не зависает. Никогда.

Хотя нет, пару раз было. Аш через ssh приходилось заходить, чтобы прибить процессы.

AVL2 ★★★★★
()
Ответ на: комментарий от Bagrov

Но свопить можно очень по-разному. Я думаю, ты знаешь это лучше меня.

про своп тут речь вообще не шла. своп, это хоть и тормозной, но логически совершенно чистый способ увеличить оперативную память.

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

При всей моей любви к Линуксу, иные африканские дистрибутивы при исчерпании памяти подвисают крепче Винды.

Нет никакого такого всеобщего линукса. Я не использую убунту и мне нет никакого дела до его проблем.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Везёт, а мне даже 1000 в oom_score_adj на процессах браузера не помогает (ну вернее один раз киллер таки сработал, но обычно висит). Помогает только запуск браузера в ограниченной cgroup-пе.

anonymous
()
Ответ на: комментарий от AVL2

Если памяти не хватает, то никакой «нормальной» обработкой эту проблему не решить

Но в Win же смогли. А в ляликсе если не хватило — всё. Ребутайся

CryNet ★★★★★
()
Ответ на: комментарий от anonymous

даже 1000 в oom_score_adj на процессах браузера не помогает (ну вернее один раз киллер таки сработал, но обычно висит)

adj влияет на выбор процесса (если киллер пришел), но не заставляет киллера приходить раньше

hakavlad ★★★
()
Ответ на: комментарий от olelookoe

И системдэ тут при том, что...?

... очень удобно без скриптования задать score ajust в юнит-файле любимого демона.

OOMScoreAdjust=
           Sets the adjustment level for the Out-Of-Memory killer for executed processes. Takes an integer between -1000 (to
           disable OOM killing for this process) and 1000 (to make killing of this process under memory pressure very
           likely). See proc.txt[2] for details.
MumiyTroll ★★★
()
Ответ на: комментарий от olelookoe

я правильно понимаю, что без системдэ тоже самое не делается никак?

Неправильно. Без системдэ надо вручную писать искомое значение в /proc/<PID>/oom_score_adj

MumiyTroll ★★★
()
Ответ на: комментарий от MumiyTroll

а с системдэ оно в юниты чем пишется, ногами?

olelookoe ★★★
() автор топика
Ответ на: комментарий от anonymous

А памяти добавить не судьба?

У меня на 8 гигах неделями висит файрфокс, поскольку ни компьютер ни файрфокс не выключается и не закрывается и работает норм.

Своп добавить. Чтобы даже когда протек, машина отвечала.

AVL2 ★★★★★
()
Ответ на: комментарий от CryNet

Но в Win же смогли. А в ляликсе если не хватило — всё. Ребутайся

Что там смогли? Что за система такая? В десяточке она просто висит и все. Нет, кое что они смогли. Десяточка может висеть, тупить и глючить и просто так, с кучей свободной памяти. Но мы же сейчас о другой магии вроде?

AVL2 ★★★★★
()
Ответ на: комментарий от olelookoe

в смысле написать ... в скриптик это прям беда-беда?

Конечно же нет, пишите. Вы же требовали user-level интерфейс к управлению OOM-киллером.

Вот это же Ваше?

Приоритеты приложений нужно объявлять в юзерспейсе, но для этого кернел должен предоставлять некий интерфейс, чтобы юзерспейс мог сказать кернелу, что вот этот PID и его потомки важны, а все остальное можешь кильнуть если что.

Вам показали что он есть, этот интерфейс, а systemd несколько упрощает этот процесс.

Что Вам теперь-то не нравится?

MumiyTroll ★★★
()
Последнее исправление: MumiyTroll (всего исправлений: 2)
Ответ на: комментарий от MumiyTroll

systemd несколько упрощает этот процесс

OOMScoreAdjust=1000

vs

echo 1000 > /proc/self/oom_score_adj
это прям радикально меняет дело, да. Было из-за чего огород городить.

Приоритеты приложений нужно объявлять в юзерспейсе, но для этого кернел должен предоставлять некий интерфейс, чтобы юзерспейс мог сказать кернелу, что вот этот PID и его потомки важны, а все остальное можешь кильнуть если что.

Системдэ не запускает приложения юзера (пока, во всяком случае). Юзер сам их запускает при помощи шелла или нажатием кнопочки. И вот для того, чтобы (пред)определять приоритеты IO, шедулинга, потребления памяти - никаких вменяемых оберток нет. Также напрочь отсутствуют простые способы обрезать аппетиты потомков, до того, как они порождены, потому что потомков без всякого спроса форкает родитель. Нет никакого вменяемого способа сказать родителю, что вот эту хрень, которую ты породишь, нужно обрезать по таким-то правилам. Нужно глазками искать порожденный процесс по каким-то признакам вычленяя его из себе подобных, ручками регулировать его аппетиты по PID. Ядро ничего не знает об «исполняемых файлах» до тех пор, пока исполняемый файл не станет процессом. Нет никакого способа заранее наложить на процесс нужные ограничения. Можно выкрутиться за счет оберточек\прокладочек, но некоторые из них ( в случае, если не мы сами управляем созданием потока\процесса) превратятся в адский костылинг.

olelookoe ★★★
() автор топика
Ответ на: комментарий от olelookoe

Также напрочь отсутствуют простые способы обрезать аппетиты потомков, до того, как они порождены

systemd-run --user --no-block -p MemoryMax=1G tail /dev/zero

Можно обрезать по множеству параметров. По числу процессов, по свопу и др.

hakavlad ★★★
()
Ответ на: комментарий от MumiyTroll

да йомайо )

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

Не бегать с выпученными глазками за каждым PIDом в надежде его усмирить, а получать предопределенное поведение.

olelookoe ★★★
() автор топика
Ответ на: комментарий от olelookoe

приоритеты IO, шедулинга, потребления памяти - никаких вменяемых оберток нет

nice, ionice, systemd-run - почему они невменяемы? Как должны выглядеть вменяемые?

hakavlad ★★★
()
Ответ на: комментарий от olelookoe

Аппетиты потомков наследуются, а не определяются

Аппетиты потомков ограничены контрольной группой. cgroups - это вам не limits.conf

hakavlad ★★★
()
Ответ на: комментарий от hakavlad

именно. а теперь при создании группы индивидуально настрой какой-нибудь там порождаемый процесс. вся группа получила вот такие ограничения на IO, а вот этот конкретный процесс, который будет вот так-то форкнут - вот такие.

olelookoe ★★★
() автор топика
Ответ на: комментарий от olelookoe

А я хочу ограничить аппетит отдельно взятой странички

Это уже вопрос к браузерам. Браузеры не предоставляют отличительных признаков для страниц разных сайтов.

Например, cmdline процесса хрома:

/usr/lib/chromium/chromium --type=renderer --field-trial-handle=17267941305356783109,15009856322865307400,131072 --service-pipe-token=9288020542725421415 --lang=ru --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --num-raster-threads=4 --enable-main-frame-before-activation --service-request-channel-token=9288020542725421415 --renderer-client-id=53 --no-v8-untrusted-code-mitigations --shared-files=v8_context_snapshot_data:100,v8_natives_data:101

Если б строка содержала адрес сайта, который этот воркер обрабатывает, можно было б динамически перекладывать соответствующие процессы в ограниченные группы.

hakavlad ★★★
()
Ответ на: комментарий от olelookoe

индивидуально настрой какой-нибудь там порождаемый процесс

Возможно чем-то подобным занималась ulatancy, динамически на лету перекладывая процессы в соответствии с правилами конфига.

hakavlad ★★★
()
Ответ на: комментарий от AVL2

Ляликсу ещё докатиться нужно до зависаний как в десяточке. В десяточке есть шанс, что Диспетчер задач таки запуститься и ты разгрузишь систему. В ляликсе если ты повис, то это конечная. Хотя раньше вроде с этим было проще или я просто реже с этим сталкивался...

CryNet ★★★★★
()
Ответ на: комментарий от hakavlad

Тыж сам писал в другом треде: Линукс ядро не может мягко обрабатывать ситуации с нехваткой памяти

Всё так. Проблема не в линуксе, а в сборщиках дистрибутивов, не включающих юзерспейсные обработчики в поставку по умолчанию. Ибо проблема давно решена в юзерспейсе.
Это не линукс плохой, а состав дистров по умолчанию плохой (earlyoom не включен).

Таки не включён

CryNet ★★★★★
()
Ответ на: комментарий от CryNet

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

AVL2 ★★★★★
()
Ответ на: комментарий от hakavlad

можно было б динамически перекладывать соответствующие процессы в ограниченные группы.

Управлять созданными процессами это не то же самое, что предопределять ограничения, накладываемые на процесс. Префорк параметры можно наложить на cgroups. Порожденный процесс (или группу процессов) можно переместить в cgroups. Но нет никакого способа накладывать индивидуальные (не наследуемые) префорк ограничения на процессы, которые порождаем не мы руками, а какой-то уже запущенный процесс.

Даже воспользоваться теми возможностями, что уже есть - это нетривиальная заморочка. Во всех известных мне wm отсутствует возможность подкрутить параметры процесса, привязанного к окошку. Хотя получить PID несложно

xprop _NET_WM_PID | sed 's/_NET_WM_PID(CARDINAL) = //' | ps `cat`
потом консоль - маны - руки - профит! И так каждый раз.

olelookoe ★★★
() автор топика
Ответ на: комментарий от AVL2

В то время как в линуксе всегда можно переключится в консоль

Не всегда. Если памяти остался один метр, то не переключишься. А если и переключишься, то не войдешь - для входа тоже нужен десяток метров памяти.

hakavlad ★★★
()
Ответ на: комментарий от AVL2

Я хз как там сейчас в Десяточке, дуалбута нет. Я по памяти :)

CryNet ★★★★★
()
Ответ на: комментарий от AVL2

У меня памяти достаточно, я просто провожу эксперименты, чтобы быть в курсе косяков ядра.

anonymous
()
Ответ на: комментарий от hakavlad

Ну так зарезервируй. Залогинься заранее. Автологин есть.

AVL2 ★★★★★
()
Ответ на: комментарий от olelookoe

Ну так это к файрфоксу вопрос. На уровне системы ничего, кроме пид нет.

AVL2 ★★★★★
()
Ответ на: комментарий от am007

Для этого достаточно обычного (preempt full?) ядра.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.