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)

У ядра Linux есть одно слабое место

Единственное слабое место это кривые разрабы

anonymous
()
Ответ на: комментарий от 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
()

Перепись лоровских кернел-хакеров объявляется открытой!

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

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

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

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

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

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

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

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

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

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

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

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

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

Да всем бы такого «плохого тестирования», как ядру. Не спорю, косяков у них хватает. Но нерабочие релизы ещё не выкатывали.

То ли я совсем старый, то ли ты совсем сопляк.

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

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 ★★★
()
Ответ на: комментарий от anonymous

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

kirill_rrr ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.