LINUX.ORG.RU

Как зависит поведение планировщика от приоритета?

 


0

1

Вот есть ассиметричные процессоры: 12 и 16 ядерные Ryzen X3D, Intel Core начиная с 12ххх и новее, ARM big.LITTLE based.

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

★★★★★

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

Для них мир лопнет, если они сделают sysfs конец с приемом информации о текущем активном окне.

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

Не особо проверял, но вроде бы в играх играх когда приоритет не наивысший могут задействоваться процентов на 20 малые ядра. Когда выставлен высший приоритет практически все идет на большие на 12900к.

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

Ядро с гуйнёй может взаимодействовать только через колбеки. Т.е. ты в sysfs создаёшь эндпоинт и в systemd пихаешь демона, который будет в колбек пихать id активного процесса

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

Все гораздо проще. При включении gamemode нагрузка почти вся идет на большие ядра, но не вся. При включении высшего приоритета командой nice -20 нагрузка распределяется в сторону больших ядер, но не вся, а примерно половина снимается с малых ядер и получается в среднем 10% нагрузки на малых ядрах. И только при сочетании gamemode с nice -20 для запуска игры почти вся нагрузка уходит на большие ядра. При это в Quake Champions выставление приоритета nice -15 для gamemoderun прибавляет еще немного производительности. Вот такая строка у меня используется для наилучшего результата, то есть везде где можно надо указывать наивысший приоритет, а сам gamemode продолжает оказывать влияние на игру, а не просто задает настройки перед запуском.

nice -15 gamemoderun RADV_DEBUG=nocompute RADV_PERFTEST=aco DXVK_ASYNC=0 nice -20 %command% -high

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

В старом видео когда движок еще выдавал свой максимум нагрузка на малые ядра при использовании вот такого набора ключей доходила до 40%, Но выдача высшего приоритета в The Alters поднимает количество кадров на 10%. У QC это не влияет на количество кадров, но нагрузку команда распределяет в сторону больших ядер. Может потому что я андервольтнул сильнее чем в старом видео большие ядра стали греться на треть меньше и нагрузка пошла на большие ядра. Было 30 ватт потребление, стало около 20 при нагрузке на одни большие ядра.

gamemoderun RADV_DEBUG=nocompute RADV_PERFTEST=aco DXVK_ASYNC=1 PROTON_NO_ESYNC=1 %command% -high

https://rutube.ru/video/a9eb7dfc3fada0242e02465c299e9c3b/

Вот тут статья была как андервольтить грамотно интелы

https://overclockers.ru/blog/Gamandril_Stories/show/203367/Osobennosti-andervol-ta-i-razgona-na-intele-na-primere-MSI-Z790-A-s-12900K-na-bortu

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

Запускается сервис от рута с dbus (по типу rtkit). Оконный манагер или вейланд-композитор дёргает по dbus этот сервис, который раскидывает указанные задачи по указанным ядрам (taskset).

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

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

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

А что надо-то?

По умолчанию работает Capacity Aware Scheduling

Который запихивает задачи по тому, сколько они могут сожрать процессора (этот коэфициент вычисляется). Приоритет тут влияет только на то, что процессу дается больше/меньше процессора, как следствие они больше/меньше могут жрать (за единицу времени), как следствие повышается вероятность(!) попасть на большее/меньшее ядро процессора.

Есть еще Energy Aware Scheduling

На данный момент работает только на arm. Но intel работает, экспериментирует над этим https://www.phoronix.com/news/Intel-P-State-EAS-Experimental

Written by Michael Larabel in Intel on 11 November 2024 at 09:15 AM EST. 1 Comment INTEL

As another effort for boosting the energy efficiency and behavior of Intel Core platforms with a mix of energy efficient «E» and performance «P» cores, a set of patches were posted Friday night for adapting Energy Aware Scheduling (EAS) to the Intel P-State CPU frequency scaling driver with a focus on providing better energy efficient performance initially for Lunar Lake SoCs.

anonymous
()

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

Ладно, допустим мы отключили автогруппировку. Тогда при борьбе нескольких процессов за ядро при равных приоритетах они получат равные доли цпу, а при неравных - неравные. Шкала довольно острая, процесс с nice 19 получает практически нихрена. Если процесс многопоточный то отожмёт долю примерно в соответствии его числа потоков относительно общего числа потоков. Высокий приоритет позволит ему отжать практически всё, а низкий - почти ничего.

kirill_rrr ★★★★★
()

А для асиметричных цпу есть или кластерная numa, про которую я только мельком слышал, или список ядер, на которых ему позволено работать. По умолчанию - все. Указывается вручную.

Хотя есть какой то довольно простой демон от интела, который как то это указывание автомотизирует. Это такая наколеночная замена их «умному и продвинутому» планировщику из винды. Тоже слышал мельком, подробности не копал.

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

Но ведь может же! В конце концов WM имеет наибольшую осведомлённость о том с чем работает пользователь. Аесли он ещё 1 раз в секунду будет как какой нибудь системный монитор проверять видимость и назначать приоритеты... Ещё такое для браузера нужно.

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

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

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

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

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

А что конкретно гейммод делает?

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

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr
CPU governor
I/O priority
Process niceness
Kernel scheduler (SCHED_ISO)
Screensaver inhibiting
GPU performance mode (NVIDIA and AMD), GPU overclocking (NVIDIA)
CPU core pinning or parking
steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

Я смотрю кот и не вижу, что есть что-то связанной с информацией о ядрах.

А всё понял, он по максчастоте их определяет.

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

Вот есть ассиметричные процессоры: 12 и 16 ядерные Ryzen X3D,

Оффтоп, но в ryazen разные ядра есть в младших моделях. В старших - симметричные. А x3d кэш - это вообще о другом, он для встроенной видюхи

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

Кластер с Х3Д начинает превосходить интел-Р по инструкциям на такт именно в игровых задачах. А без него - отстаёт. И не дай бог процесс размажется между этими двумя кластерами...

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

В 9xxx серии x3d уже нет такого косяка что в неигровых задачах он медленнее обычных. Он тупо везде обходит безкэшевый райзен и практически во всех обходит интел. Кластеры никуда не делись, тем не менее.

anonymous
()