Линуксы испокон веков в целом были хуже Windows для большинства людей, хотя что я рассказываю, и сейчас в принципе ничего не изменилось кардинально, разве что Microsoft начали откровенно ломать "форточки" начиная с 11 версии, и монополизировать компьютеры пользователей такими вредоносными технологиями как Secure Boot...
Хотя если посмотреть на ситуацию в плане производительности, становится ясно, что Microsoft нужно очень долго и упорно ломать свою операционную систему, чтобы достичь изначально паршивого уровня Linux:
Но сейчас речь не про Windows, а про разгон Linux, каким образом вообще это сделать? Всё просто, сейчас мы будем экспериментировать с настройками планировщика ЦП, и не надейтесь что в линуксах можно просто переключить галочку как в Windows, и всё прекрасно будет работать, нет, нужно танцевать с бубном терминальным.
Так вот, первый, и очевидный способ "разогнать вечно дряхлого пингвина" это потанцевать с утилитой cpufreq, достаточно просто переключить "планировщик ЦП" в режим performance, если такой конечно доступен:
И делать это нужно для каждого ядра в отдельности (SMT тоже считается ядром, ох уж эти линуксы):
Однако есть способ проще, можно изменить всего одно значение в файле "/sys/devices/system/cpu/cpufreq/ondemand/up_threshold", по умолчанию оно обычно выставлено в 60, снижаю до 5 и получаю такой же эффект, как и при возне через cpufreq утилиту:
Это значение отвечает за процент использования ядра, после которого начинается повышение частоты, по умолчанию в линуксах только при 60-100% нагрузке на ядро начинается повышение частот (вот и весь "секрет" мнимой энергоэффективности линуксов на ноутбуках), и если снизить это значение до 5%, то уже при незначительной нагрузке будут повышаться частоты.
Ну а режим работы "performance" просто повышает частоты ядер до максимальных независимо от нагрузки.
Стоит ли говорить, что оба варианта ужасно отражаются на энергоэффективности системы?
А ещё есть нюанс, эти все функции не работают в виртуальных машинах, да и на реальных ПК тоже может не быть контроля над работой ЦП в зависимости от конфигурации, так что такой "разгон линукса" доступен не всегда:
Ну что, с особенностями разобрались, пришло время провести сравнительные тесты.
Тестовая конфигурация состоит из Ryzen 7 2700X (XFR Boost отключен, максимальная частота всех ядер 3.6 ГГЦ), 64 ГБ ОЗУ 3333 МГц и GeForce GTX 1070 8 ГБ.
В качестве операционных систем выступают Windows 7/10 и Chimbalix 24.3 Alphachi (Linux 6.9.10-1 Liquorix).
Сбор результатов производительности - MSI Afterburner / Mangohud.
Игра - Forward to the Sky (Windows / Linux версии).
Wine Proton LG v9.5.1 (9.0).
-
Linux
Начнём собирать результаты в среде Linux, ибо мне так проще.
Запускаем Windows версию игры с оверлеем Mangohud через встроенный в дистрибутив Wine Proton LG:
Итого имеем в среднем 38.6 FPS со стандартными линуксоидными настройками up_threshold, и 43.5 FPS со значением 5% вместо 60%:
Забегая вперёд, если переключить "планировщик" в режим performance, то частота ядер перестаёт управляться значением up_threshold, но так получилось выжать 44.1 FPS:
Далее нативная линуксоидная версия игры:
При значении up_threshold на стандартном уровне имеем 41.2 FPS, при значении 5 получилось всего 42 FPS, в режиме performance 43.6 FPS, так уж получилось, что нативная Linux версия игры работает хуже, чем Windows версия запущенная через Wine, забавно:
Особо внимательные могли заметить, что нативная Linux версия игры имеет артефакты графические (жирные полосы теней на стыках геометрии), которых нет у Windows версии игры, то есть она не только медленнее игры предназначенной для Windows, но и работает хуже...
Осталось собрать результаты в среде Windows и сравнить.
Windows
Так как практически все игры разрабатывают именно для Windows, то и с тестами никаких сложностей нет, просто запускаю как есть и собираю результаты.
В старой доброй Windows 7 имеем средний FPS на уровне 51.2, причём частота ядер всегда максимальная, ибо не работают функции энергосбережения, скорее всего из-за отключенного XFR Boost, ну или просто не установлены какие-то драйверы необходимые для функций энергосбережения, так что имеем только один результат:
Далее чистая Windows 10, с ней уже работают функции энергосбережения даже при отключенном XFR Boost, и средний FPS на уровне 53.4:
Теперь отключим функции энергосбережения, сделаем аналог режима "performance", и получаем 54.5 FPS:
Почему я не переключал план одной галочкой в параметрах Windows? На самом деле это можно было сделать, но там кроме функций энергосбережения ЦП ещё и масса других параметров изменяется, чего я не хотел допускать.
Параметры работы PCI-E интерфейса в линуксе я не трогал (если вообще можно трогать), когда Windows даже такие параметры изменяет при переключении плана производительности, вот что называется настоящий "User Expirience", один клик и всё настроилось, а не вон то всё дерьмо с терминалом в линуксах странное и непонятное большинству людей...
-
Результаты
Пришло время отправить результаты в наглядную таблицу, чтобы не перегружать количеством информации, оставлю в таблице только результаты "как есть", и в режиме "performance", то есть обычный результат и максимальный полученный.
Что тут сказать, "дряхлого пингвина" сколько не пинай - как птица не полетит, увы... Причём Windows версия игры запущенная через Wine Proton показала более высокую производительность, чем линуксоидная нативная, ну а Windows так и остаётся недосягаемой:
Да, пляски с бубном могут сократить разрыв, и Linux уже не так печально выглядит по сравнению с Windows, но не стоит забывать, у меня сейчас кастомное ядро линукса, которое быстрее обычного:
Такие вот результаты получились, думаю есть смысл сделать костыль для новой версии дистрибутива Chimbalix, чтобы управлять работой процессора без танцев с бубном в терминале...
«Linux бесплатен, только если ваше время и труд не имеют ценности», этим всё сказано.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.