LINUX.ORG.RU
ФорумGames

Планировщики CPU: CFS vs tweaked CFS vs MuQSS vs BMQ vs PDS vs Cachy

 , , , ,


2

4

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

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

https://flightlessmango.com/games/11785/logs/764

https://www.reddit.com/r/linux_gaming/comments/ifnrp9/cpu_schedulers_benchmark_cfs_vs_tweaked_cfs_vs/

Edit. Проверил еще в Overwatch: https://flightlessmango.com/games/15751/logs/847

Edit2. Еще одно сравнение в Overwatch (на другой карте), на этот раз протестировал Cachy шедулер: https://flightlessmango.com/games/15751/logs/986

★★★★

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

Это с ванильным и есть, CFS и твикованый CFS я на ванильном ядре проверял.

Kron4ek ★★★★ ()

eli5 pls.

это означает что с PDS я могу на линуксе играть в Path of Exile с таким же FPS как и на венде?

bhfq ★★★★★ ()

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

pon4ik ★★★★★ ()
Ответ на: eli5 pls. от bhfq

Это означает что планировщик CPU, который в Linux используется по умолчанию, не очень хорош в играх, точнее в этой конкретной игре (Kingdom Come Deliverance) на моем железе. А с виндой я не сравнивал, там может быть лучше результат, а может и хуже.

Тем не менее, насчет Path of Exile, скорее всего FPS на линуксе будет плюс-минус таким же как на винде, так как в игру недавно завезли Vulkan рендер (но он вроде пока в Beta версии).

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

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

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

Нее, на моем томогочике можно играть на венде 60фпс спокойно даже в замесах (ну конечно когда уж слишком много мобов фпс падает), а вот на линуксе даже в средних замесах уже 40, такое ощущение что производительность где-то на 20% ниже.

  • к тому же на линуксах Gnome Shell и KDE/Kwin это первые источники тормозов в играх, в каком-нибудь xfce такого нет даже с включенным композитором.
bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 1)
Ответ на: комментарий от bhfq

А что за железо? Если у тебя игра в проц упирается, то смена планировщика CPU может помочь. Попробуй твики CFS, благо ядро ради этого не нужно менять, даже перезагружаться не нужно:

echo 3000 > /proc/sys/kernel/sched_cfs_bandwidth_slice_us 
echo 3000000 > /proc/sys/kernel/sched_latency_ns 
echo 300000 > /proc/sys/kernel/sched_min_granularity_ns 
echo 500000 > /proc/sys/kernel/sched_wakeup_granularity_ns 
echo 50000 > /proc/sys/kernel/sched_migration_cost_ns 
echo 128 > /proc/sys/kernel/sched_nr_migrate 

Если станет хуже, то просто перезагрузись, чтобы вернуть значения по умолчанию.

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

Это зависит от движка/порта, а не от линя. Достаточно сравнить порты AAA игр и dxvk.

Например Nier у меня выдаёт идентичный FPS на обеих ОС. А Wolfenstein: The Old Blood работает быстрее на лине. При этом «нативные» Borderlands 2, Tomb Raider 2013 и Bioshock Infinite вообще неработоспособны под линем. FPS раза в два ниже. На моих тестах Borderlands 2 через proton работает чуть лучше, чем нативный.

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

KDE/Kwin это первые источники тормозов в играх

kwin уже давно автоматически вырубает эффекты для fullscreen игр.

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

Ну, не совсем ноль, но с хорошим процем разница минимальна должна быть между планировщиками. Вот комментарий с reddit:

I also saw big improvements with PDS on an i5 6400 with various wine games. Upgraded to an 8700k and the difference is very small (even when CPU bottlenecked). So it does seem like low thread count CPUs can benefit a lot from a non-CFS scheduler.

Вот сравнение планировщиков на хорошем процессоре.

Но с другой стороны, есть и нагрузки, в которых сторонние планировщики дают улучшение даже и на хороших процессорах, опять же коммент с reddit:

It can also benefit heavy, threaded workloads like the RPCS3 emulator. Although it’s a fairly unique case, which particularly affects older Zen CPUs (that have inter-CCX bottlenecks).

I’ll add that MuQSS performs the best with this workload, and current PDS performs poorly.

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

У меня в играх нагрузка на проц от силы 20%. Поэтому сомневаюсь что имеет смысл менять планировщик (у мну gentoo, поэтому проще). Всё упирается в видяху, ибо 4к.

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

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

Kron4ek ★★★★ ()

Сейчас сижу с muQSS на старенькой двухголовой рабочей станции с NUMA архитектурой, два четырёхядерных Оптерона без гипертреда. Тестов никаких не проводил, шедулер накатил просто из любопытства. Органолептически никакой разницы с дефолтным шедулером не вижу, ни в играх, ни в работе, ни в конпелянии. Так что наверное когда буду ядро обновлять вернусь на дефолт. Справедливости ради ухудшений, оопсов и каких либо вообще странностей тоже никаких нет.

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

Я в большинстве случаев тоже разницы не вижу, прям сильно я заметил разницу считай только в Kingdom Come Deliverance, просто остальные игры у меня, как правило, не упираются в процессор.

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

Вот, кстати, вопрос к опытным и мудрым. На новой станции два Ксеона о восьми ядрах каждый, с гипертредом получается 16 потоков на камень, итого в сумме 32 потока. Имеет ли смысл гипертред выключить вообще, чтобы он не смущал планировщик и не умножал число сущностей? Или тупо забить и оставить как есть. Машина занимается рендерингом видео, иногда на ней крутятся одновременно 3-5 виртуалок virtualbox, конпеляет, бывает сервером minecraft и ИГЫ1111.

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

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

Kron4ek ★★★★ ()

Собираю обычно ядро с патчем от https://github.com/graysky2/kernel_gcc_patch
Плюс свой (делает доступной O3)

--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1232,7 +1232,6 @@
 
 config CC_OPTIMIZE_FOR_PERFORMANCE_O3
 	bool "Optimize more for performance (-O3)"
-	depends on ARC
 	help
 	  Choosing this option will pass "-O3" to your compiler to optimize
 	  the kernel yet more for performance.

Ради любопытства, собрал 5.7.18 добавив ещё только патч 0005-v5.7_undead-pds099o.patch из списка https://github.com/Frogging-Family/linux-tkg/blob/master/linux57-tkg/linux57-...
Результат: стало на 5 FPS меньше (по тесту Warthunder).
Может надо было все патчи накладывать?
Процессор Intel i3-7100

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

Может надо было все патчи накладывать?

Я только PDS патч накладывал, остальные патчи не трогал. Правда, у меня ядро 5.4.

Результат: стало на 5 FPS меньше (по тесту Warthunder).

Ну, видимо на Warthunder отрицательно влияет. Если не лень снова пересобрать, можешь также попробовать MuQSS (0004-5.7-ck1.patch).

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

У тебя же, насколько я помню, интеграшка, правильно? Скорее всего, у тебя в нее производительность упирается на любом из планировщиков.

Kron4ek ★★★★ ()

Разница огромная

Огромная разница была бы если одноядерное поделие типа Gothic 4 Arcania пошло бы в 60 fps на чем-нибудь с множеством тухлых ядер, типа FX8120

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

типа FX8120

Бесполезно, никакой шедулер не сделает игровой процессор из бульдозера)

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

У меня в играх нагрузка на проц от силы 20%.

Нагрузку надо по ядрам смотреть, она и с 20% может упираться в процессор.

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

Поправка, обновил бенчмарк. Оказалось, что Cachy у меня работает не хуже чем CFS. Точнее, при первом запуске игры - хуже, но при втором запуске - лучше. Тем не менее, все еще хуже чем MuQSS и PDS.

Видимо у Cachy какая-то проблема с I/O активностью, она почему-то значительно влияет на производительсть, поэтому при втором запуске игры производительность оказалась гораздо лучше.

Все шедулеры я тестировал в одинаковых условиях и замерял производительность при первом же запуске игры после перезагрузки системы, у других шедулеров нет проблемы с I/O. Для Cachy теперь пришлось сделать исключение и замерить производительность при втором запуске игры, когда уже все файлы игры закешировались.

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

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

Конечно. Заодно второй сокет и второй канал оперативки тоже выключи, чтобы они не смущали чипсет и не умножали количество сущностей.

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

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

Почему тема на лоре, а не на багтрекерах вайна и ядра?

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

Я их в патче TkG увидел, впрочем в ядрах Zen и Liquorix примерно такие же значения используются, можно в исходники глянуть.

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

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

Попробовал на ядре 4.0. Странно, этих параметров не существует, кроме самого первого.

# echo 3000 > /proc/sys/kernel/sched_cfs_bandwidth_slice_us 
# echo 3000000 > /proc/sys/kernel/sched_latency_ns 
bash: /proc/sys/kernel/sched_latency_ns: Нет такого файла или каталога
# echo 300000 > /proc/sys/kernel/sched_min_granularity_ns 
bash: /proc/sys/kernel/sched_min_granularity_ns: Нет такого файла или каталога
# echo 500000 > /proc/sys/kernel/sched_wakeup_granularity_ns 
bash: /proc/sys/kernel/sched_wakeup_granularity_ns: Нет такого файла или каталога
# echo 50000 > /proc/sys/kernel/sched_migration_cost_ns 
bash: /proc/sys/kernel/sched_migration_cost_ns: Нет такого файла или каталога
# echo 128 > /proc/sys/kernel/sched_nr_migrate 
bash: /proc/sys/kernel/sched_nr_migrate: Нет такого файла или каталога
ZenitharChampion ★★★★★ ()
Ответ на: комментарий от devl547

Забавно) Я видел новое название, но не думал, что автор его в таком значении интерпретирует, он же вроде не русскоговорящий. Однако, судя по картинке, именно в таком.

Kron4ek ★★★★ ()
Последнее исправление: Kron4ek (всего исправлений: 2)
Ограничение на отправку комментариев: только для зарегистрированных пользователей