Size: a a a

2021 December 23

IN

Igor Nezaharov in UbuntuLinux
Да
источник

IN

Igor Nezaharov in UbuntuLinux
Но оно нориальное
источник

c

conformíst in UbuntuLinux
тогда зачем платить больше?
источник

IN

Igor Nezaharov in UbuntuLinux
И управляется чем угодно
источник

c

conformíst in UbuntuLinux
вкладка вроде тоже
источник

A

Andrew in UbuntuLinux
Привет, Взлом HACK! Правила беседы: https://s3.uwcdn.net/ubuntu/index.html
источник

c

conformíst in UbuntuLinux
взлом жёппы капчует
источник

n

ninja_yeti in UbuntuLinux
источник

c

conformíst in UbuntuLinux
дiiiiiiiiiдько
источник
2021 December 24

JH

Jubal 🤌🤌 Harshaw... in UbuntuLinux
Про scheduler в Linux.

Я знал, что шедулер в Linux хуйовый(мат intended), но что на десктопе все сломано настолько, я не понимал. У меня во время компиляции тормозит браузер(любой). И я ничего не смог с этим сделать.

Вот команда запуска компиляции(IO я не трогаю, все в памяти):

chrt --idle 0 cpulimit -l 1400 -i nice -n 20 ./mix realm upgrade

Я ограничиваю число ядер для компиляции(14 из 16), я выставляю nice, я помечаю треды на idle sheduler, чтобы они вытеснялись любым более приоритетным кодом.

Команда запуска браузера примерно такая же, только - заменяем на +, —idle на —rr, etc. Команда запуска композитора тоже(все, что затрагивает user facing процессы, запущено с повышенными scheduling privileges).

И это не помогает. На минуточку, я для браузера оставил полноценное ядро(2 гипертреда), у меня число процессов в очереди на выполнение <  CPU CORES, и все равно, шедулер как-то умудряется просрать(сука! ненавижу!) все полимеры. Почему так? Я вам расскажу!

Первое соображение - про процессы разработки.

Я уже много раз рассказывал, ядро Linux пишут красноглазые хакеры. Без нормального процесса разработки, тикетов, тестов, etc. Код соответствующего качества. Как нормальный разраб бы оформил шедулер? А вот так:

IScheduler* scheduler = new WorkStealingScheduler(
  some kernel interfaces)...
...
auto job = sheduler->nextWorkItem();

Отметим наличие интерфейсов, чтобы можно было мокать тесты, инкапсуляцию(шедулер имеет доступ только к тем частям ядра, что ему явно передали), etc.

В  ядре Linux это лапша без четкого интерфейса, что на входе, что на выходе, с кучей side effect по всему ядру, с доступом по всему ядру, полной невозможностью написать эмулятор и тесты.

Есть, типа, описание, как должен работать шедулер:

https://en.wikipedia.org/wiki/Completely_Fair_Scheduler
https://blog.acolyer.org/2016/04/26/the-linux-scheduler-a-decade-of-wasted-cores/

Господа, да если бы он работал по этому алгоритму, было бы счастье! Этот алгоритм by design не допускает лаги, когда у меня число выполняющихся процессов < CPU CORES! Так он уже давно по нему не работает.

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

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

Кстати, Con Kolivas отказался от идеи запилить нормальный scheduler для Linux. https://www.phoronix.com/scan.php?page=news_item&px=Con-Kolivas-EOL-MuQSS-CK Я бы, на его месте, послал всю эту пиздобратию еще раньше, когда Ingo Molnar, вместо того, чтобы признать, что Con лучше справился с работой, просто потырил его идеи в свою реализацию.

Второе соображение - пошедулить браузер существенно сложнее, чем пошедулить Apache. Прямо на порядок сложнее. Когда ты шедулишь Apache, тебе пофиг, что ты там где-то просрал квант времени. Когда ты шедулишь браузер, тебе надо выдавать стабильный RPS в 120, и просер одного кванта времени заметен. Тебе нужно реализовывать сложные алгоритмы, что, если ты отпустил lock, то твой квант времени доедает тот, кто этот lock получит(то же самое про запись в pipe). Почему это важно? Потому что тебе нужно, чтобы композитор моментально начал свою работу после того, как ты ему просигнализировал, что твой буфер с окном готов.

Под что тюнят облачные корпорации Linux scheduler? Вопрос риторический.

Итак.

* Шедулер в Linux сломан давно и навсегда(для десктопа, да и для серверов, если вы не большая корпорация со штатом крутильщиков ручек)
* Лучше всего(для десктопа) он работал в 2006 - 2008 году, пока его разработчики тюнили его под свои же workstation. Вот тогда реально все было плавненько.
* Чего там ищет Valve для гейминга в Linux - я не понимаю. https://www.opennet.ru/opennews/art.shtml?num=56390
источник

JH

Jubal 🤌🤌 Harshaw... in UbuntuLinux
это мне напомнило как я недавно здесь же спрашивал как научить убунту не крешить все когда какой-то цпу баунд процесс начал жрать невсебя
источник

A

Andrew in UbuntuLinux
Привет, Larouche Paul! Правила беседы: https://s3.uwcdn.net/ubuntu/index.html
источник

A

Andrew in UbuntuLinux
Привет, Простой Парень! Правила беседы: https://s3.uwcdn.net/ubuntu/index.html
источник

А

Алекс in UbuntuLinux
wIwIo
источник

А

Алекс in UbuntuLinux
всем привет ! И с наступающим , а ну подскажите комп загружается все ОК , но если делаешь попытку запуска биуса то болты , он работает нум лок , капс реагируют но картинки нет
источник

A

Andrew in UbuntuLinux
Низкий Вам поклон!
источник

IN

Igor Nezaharov in UbuntuLinux
а ну ка
источник

RT

Roman Trawin in UbuntuLinux
надо было ставить винду
источник

A

Adversus in UbuntuLinux
источник

R.

ReFea'IM[e] ... in UbuntuLinux
Баян.
источник