LINUX.ORG.RU

MuQSS, liquorix и ренессанс linux десктопа

 , ,


3

4

Год или два назад, хотел решить проблему дёрганного UI в linux.
Проявлений у неё много, но простейший кейс, это однопоточный процесс, заставляющий дёргаться всё остальное на четырёхядерном железе.
Микрофризы на разных программах разной силы. Скажем, chromium более чувствителен, чем firefix. Но даже в emacs они порой ощутимы.
Перепробовал тогда всё: приоритеты, cgroups, тюнинг CFQ, пересборка debian stable без tickless и с 1000hz.

Всё впустую. И в сумме, и по отдельности.
Да, cgroups вполне успешно душит общее использование CPU низкоприоритетной группой, но когда надо поскроллить в хромиуме, в группе гораздо с гораздо более высокими cpus shares, лаги никуда не деваются.

Не люблю наколенные поделки, но раз в прошлом ничего не получилось, попробовал стороннее ядро http://https://liquorix.net
Честно говоря, немного шокирован результатами. Моя конфигурация cgroups там не работает, только скрипт повышающий приоритет декстоп-ориентированым процессам, но на этом с ара-тюнингом с моей стороны всё.

Так вот: я вообще не могу навскидку понять, завершилась моя фоновая однопоточная числодробилка, или нет.
Другой типичный юзкейс: проявка raw в rawtherapee, пока в picture-in-picture фаерфокс играет что-то с ютуба.
На стоковом ядре, или из бекпортов, видео жёстко лагало и периодически просто фризилось на несколько секунд, понижение приоритета rawtherapee не помогало.
С ядром liquorix и rawtherapee с nice 10 вижу, как периодически выпадают кадры из видео, когда rawtherapee пытается всё процессорное время сожрать, но общая плавность вполне сохраняется.
nice начинает наконец реально работать с точки зрения отзывчивости. Долгоиграющий многопоточный пожиратель cpu с nice 19 не то чтобы совсем уж незаметен, но доставляет меньше проблем.

Из совсем неожиданных эффектов: очень быстро переключаются рабочие столы. Редко что-то завершаю, от того у меня полно программ и окон, и почему-то на стоковом ядре, даже без нагрузки, нужно немного времени чтобы всё нарисовать.
Казалось, это норма. Оказывается нет.

Сижу с этим ядром на одной из машин уже месяц, пока проблем не было.
Работают ли числодробилки медленнее? Не знаю. Я бы не огорчился и от 20% пенальти по общему runtime.
Из нехорошего: там ещё кучи каких-то патчей, решающих проблемы, которых у меня нет. Стрёмненько.
Ядра пекутся как пирожки, а не раз в вечность. Тоже стрёмненько.
Нет поддержки x86.
Пока из недостатков вроде всё.

TL;DR: MuQSS делает всё, о чём мы мечтали, и без ручного тюнинга.

★★★★★
Ответ на: комментарий от aidaho

Браузер и всё остальное то всё равно по ядрам будет скакать, если не прибить гвоздями тоже.

Если как следует изучить опции утилиты ps то достаточно просто придумать скрипт на баше который в зависимости от имени процесса(case all)) будет сажать его на то или иное ядро за одно выкидывая все неизвестные процессы с тех или иных избранных ядер.

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

le9 patch не тестировал?

The attached kernel patch (applied on top of 4.18.5) that I’ve tried, almost completely eliminates the disk thrashing(the constant reading of executable(and .so) files on every context switch) associated with freezing the OS

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

Не пробовал. Судя по его описанию, он уменьшает этот disk thrashing в ситуациях с нехваткой памяти, так что вряд ли мне поможет.

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

Автогруппы включены в Ubuntu и Fedora, выключены в Debian.

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

Таким образом, при включенных автогруппах stress -c 32 и stress -c 1000 одинаково влияют на Xorg.

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

В том, чтобы во время массивного I/O на HDD процессы, которые тоже к HDD обращаются, не заикались. Может быть, ionice поможет.

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

ionice не работает т.к. не управляет background writeback. вообще с тормозным механическим диском тебе никакие припарки не помогут. меняй на ssd и/или разноси нагрузку по разным дискам

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

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

активных грузящих потоков запускают ровно по количеству аппаратных потоков у проца

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

ну и нахрена этот пердолинг, ммм? такой хернёй занимаются только в реалтайме, где важны наносекундные задержки

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

это херня полная, никто 128активных потоков не запускает, если столько аппаратно у проца нет

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

SSD - штука хорошая, я планирую купить. Однако странно, что все так плохо на HDD даже с BFQ, который по описанию должен с этим помогать:

Regardless of the actual background workload, BFQ guarantees that, for interactive tasks, the storage device is virtually as responsive as if it was idle. For example, even if one or more of the following background workloads are being executed:

Но нифига. По моему опыту, что bfq, что mq-deadline в таких ситуациях примерно одинаково работают. И там, и там все тупит и заикается. И раньше с CFQ примерно так же было.

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

никто 128активных потоков не запускает

Правильно, запускают nproc, а далее процессы еще разветвляются, и получаем nproc*10.

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

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

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

нет никакого смысла нагружать например 4поточный проц активными 32потоками нагрузки

В реальных задачах может быть куча потоков. Вон лиса 8 потоков включает по умолчанию. У хрома и того больше. Это для примера.

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

все эти потоки спят 90% времени, активных меньше чем аппаратных

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

зачем? это видео от местного регистранта со стресс-тестом, так что ты клоун

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

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

Выше писал, что пытался решать проблемы отзывчивости с помощью cgroups.
Это не работает, потому что планировщик по прежнему проблемный (с точки зрения реакции UI).
Загружаешься с альтернативным ядром, и внезапно, проблема исчезает сама.

aidaho ★★★★★
() автор топика

По классике - NOTABUG, штоп реопенинг!

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

Может и не запускает, но никакой неожиданной критической проблемы 32 потока на ядро не несут. Замедление работы? Разумеется, а как иначе? Плохо что повышенный nice нельзя выставлять от юзера, а вот мифические проблемы в ядре лично у меня не проявляются.

З.Ы. Пишу эту приписку под nice -n 20 stress -c 64. Полёт нормальный, фризы изредка и еле ощутимые, замедление незначительное.

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

Кстати, мне тут в голову одна мысль пришла: А как вообще планировщики должны работать на цпу с гиперпоточностью и не противоречит ли это идее smp? С другой стороны, i5-7500T без гиперпоточности, а вопросы к нему имеются.

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

А если штатное ядро какого нибудь принципиально другого дистрибутива, да ещё версий на 10 вперёд или назад?

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

Не знаю, что там у тебя за идея и что чему противоречит, но работает нормально, попугаев бывает больше чем на венде и визуально всё летает, не как у ТС.

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

Может быть я просто не видел «правильного» гиперпотока, но я пока что не видел, чтобы гиперпоток не вызывал просадки фпс при наличии фоновой нагрузки. Или альтернатива - фризы и задержка ввода в многопоточных играх.

kirill_rrr ★★★★★
()
29 мая 2021 г.
Ответ на: комментарий от altwazar

с 1024 тоже никакого эффекта

Так и не должно быть эффекта при vm.sched_autogroup_enabled=1. - Это дефолт на большинстве десктопов. В древних дебианах автогруппировки из коробки не было, и стол мог легко замерзать.

https://www.opennet.ru/opennews/art.shtml?num=29919

В состав ядра интегрирован патч с реализацией идеи автоматической группировки задач для повышения интерактивности на десктопе. Патч специальным образом разбивает выполняемые задачи на группы в привязке к идентификатору сессии, в дальнейшем планировщик задач оперирует данными группами как единым целым. Номер сессии изменяется при выполнении системной функции setsid(), которая, например, вызывается для каждого нового сеанса командной оболочки (тем не менее, при запуске десктоп приложений идентификатор сессии не меняется, т.е. если запустить в терминале «make -j 20», влияние на десктоп-приложения будет минимально

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

В состав ядра интегрирован патч с реализацией идеи автоматической группировки задач для повышения интерактивности на десктопе. Патч специальным образом разбивает выполняемые задачи на группы в привязке к идентификатору сессии, в дальнейшем планировщик задач оперирует данными группами как единым целым.

Это прекрасно, что пользователи получат некоторые бенефиты без возни с cgrulesengd и подобными решениями.
Но топик был как раз про то, что микролаги ничем не устраняются с ванильным планировщиком.
Процесс с одной cpu share успешно микрофризит процесс с 999.

P.S. С liquorix, к сожалению, пришлось вернуться на лагающий дефолт.
Там нет audit и ещё каких-то нужных мне вещей.

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

> В древних дебианах автогруппировки из коробки не было, и стол мог легко замерзать

Так вот почему у меня майн работает-работает, и раз в две минуты фризит на 0,2 секунды.

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

т.е. если запустить в терминале «make -j 20», влияние на десктоп-приложения будет минимально

В теории, на практике же кинцо не всегда нормально в этих условиях посмотреть можно. Например, с pipewire у меня с «-j8» на i7-2600 звук может иногда икать. Но вот замерзания курсора от нагрузки на cpu я еще не встречал.

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

В случае с -j8 проблема может быть в IO, а не в CPU.

stress -c 10000 у меня не вызывает прорблем. А вот с -j512 тормоза начинаются быстро.

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

Процессы компиляции читают и пишут на диск. Диск здесь узкое место, а не цп.

У менч диск не узкое место (ssd, iowait - 0). Но вот странные проблемы из-за IO полностью исключать нельзя, они в линуксе на десктопе вылазят сколько я себя помню.

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

У меня слабый проц который НЕ перегружается фоновой нагрузкой. Потому что я знаю nice и cgrops, умею расставлять приоритеты и раскидывать задачи. 3-4 потока на ядро это не нагрузка.

С другой стороны у меня был интел атом 2 поколения, гиперпоточность там не отключалась и давала аж 5-7% производительности в компиляции и архивации. Зато просаживала фпс в любом шутере в 2 раза уже при 1,5 потока на ядро. Это неслабо чувствовалось уже в q3, а какой нибудь nexuiz просто терял всякий смысл если забыть прибить браузер с рекламным банером. Так вот, скорость потока была раза в 3 выше чем на RPi3, но на малине я легко смогу порубиться в q3 без просадки фпс под нагрузкой в 4 потока на ядро (15 потоков комплияции+q3), а более быстрый проц с гиперпоточностью просядет хоть убейся.

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

может добавили интересных локаций и еще чего. Помню знатно рубился недели 2 подряд. Нашел много потайных комнат

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

Я пару недель рубился с младшим братом. Кончилось тем, что он научился играть в шутеры а у меня начали болеть пальцы. А выигрывать я начал исключительно в тактических ситуациях вроде флагов и сбора экипировки.

kirill_rrr ★★★★★
()

Нет поддержки x86.

Пишешь нам из горящего арма? =D

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