Зарегистрируйтесь без указания e-mail всего за 1 минуту! Скорее нажмите сюда!
Amor Ex Machina? Maybe.
 

➜ главная Домика
Вы не залогинились! Ваш статус в этом ДоМиКе - гость.
В домике онлайн: 0, замечено за сутки: 2

Ко всем статьям ДоМиКа

Статья в домике "Гнездо Феникса"

Лже-оптимизации Intel в GRUB-загрузке (Linux)

Несколько раз промелькивала линуксоидная тема, мол, если у вас линукс, и если процессор Intel, то якобы есть какие-то магические параметры в загрузке GRUB, при которым, мол, отключаются патчи процессора, закрывающие его уязвимость, но снижающие производительность. В этой статье мы попытаемся разобраться, так ли это.
И, якобы, если эти заплатки отключить, то производительность может вырасти чуть ли не на 30%!

Посмотрим, так ли это.

Ну, сначала какие опции можно включить.

Вариант первый. Советуют на Арч Вики, но, по другим источникам, оно работает только для ядер 2 версии:

GRUB_CMDLINE_LINUX_DEFAULT='splash=silent logo.nologo quiet mitigations=off'

(т.е. это параметр "mitigations=off" - в дальнейшем я буду называть запуск с этим параметром "MitigOff" )

Вариант второй. Считается, что подходит для современных ядер и отключает патчи которые сильнее влияют на производительность:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pti=off spectre_v2=off nospec_store_bypass_disable"

(т.е. это такие "ti=off spectre_v2=off nospec_store_bypass_disable" - в дальнейшем я буду называть такие параметры "Spectr" )

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

Надо заметить, что судя по всему, согласно dmesg, на "Spectr" еще как-то реагировалось, типа:

[   0.113792] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[   0.113795] Spectre V2 : off selected on command line.
[   0.113795] Spectre V2 : User space: Vulnerable

То на "Mitig" вообще только такое, и все:

 [   0.052481] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.9.8.xm1-ML2.k.1-xanmod-rosa2021.1-x86_64 root=UUID=50449366-d199-4b08-8ec2-d70988479ee8 ro rhgb quiet selinux=0 splash=silent logo.nologo mitigations=off quiet snd_hda_intel.dmic_detect=0 resume=UUID=5ca4dc29-d400-480c-8171-2133fa8996e8
[   0.052555] Unknown kernel command line parameters "rhgb BOOT_IMAGE=/boot/vmlinuz-6.9.8.xm1-ML2.k.1-xanmod-rosa2021.1-x86_64 splash=silent", will be passed to user space.



Тестировал я на двух компьютерах.

Первый - мой новый ноутбук XIAOMI Redmi Book Pro 16 2024, Intel 7 155H (22 ядра)
ОС - Роса Фреш Гном 12.51
ядро 6.9.8.xm1-ML2.k.1-xanmod-rosa2021.1-x86_64
Для краткости обзову его "RedMi"

И второй, стадионарный:
Китайская матплата JGINYUE X99M-PLUS D4, проц Xeon ES-2680v4 (28 ядер)
ОS - Ubuntu 24.04 LTS
ядро 6.5 какое-то generic (с полученным от Ubuntu 6.8 стало работать нестабильно и отваливаться старая WiFi сетевушка)
Для краткости обзову его "Xeon"

Как тестировал.. Я подумал, что на настоящий момент самым простым и актуальным лично для меня был бы бенчмарк... ну, скажем, архивирования в bz2.

Ну, короче, взял файлы mysql dump (это текстовые данные) на 2.3 гига, взял Рамдиск (в Росе это /tmp, в Убунту сделал сам, а то /tmp там на основной диск монтируется) взял скрипт, который делает

 tar -cvjf /media/ramdisk/allbench.tar.bz2 .
(т.е. архивирует все в один файл bzip2 (тоже на рамдиск) и пишет время, которое это все заняло, в милисекундах.)

Еще я использовал разные режимы работы.
RedMi испытывался в двух режимах - при работе от батареи, и при работе от розетки с включенным параметром Frequency Boost (использовался плагин OsPower для Gnome версии Росы)
Xeon тоже использовался в двух режимах - в Гноме 46 там есть в меню положение Performance и Balanced... Правда, влияет ли это хоть на что-нибудь, я не понял ) Ну да ладно.

Вот что получилось:

RedMi на батареях без GRUB параметров
Время выполнения: 461634 мс (примерно 7-8 минут)

RedMi на розетке без GRUB параметров с Frequency Boost
Время выполнения: 147749 мс

RedMi на батареях с Spectr
Время выполнения: 461358 мс

RedMi на розетке с Frequency Boost
Время выполнения: 150465 мс

RedMi на батарее с MitigOff
Время выполнения: 461657 мс

RedMi на розетке с Frequency Boost и MitigOff
Время выполнения: 151457 мс


Xeon режим Balanced
Время выполнения: 250730 мс

Xeon режим Preformance
Время выполнения: 248386 мс

Xeon с Spectr режим Balanced
Время выполнения: 251346 мс

Xeon с Spectr режим Preformance
Время выполнения: 250176 мс

Xeon с MitigOff режим Balanced
Время выполнения: 247517 мс
Второй прогон - Время выполнения: 248858 мс

Xeon с MitigOff режим Preformance
Время выполнения: 248344 мс


И тут я подумал... может, все-таки у меня какие-то не такие параметры? Может надо еще какие параметры загрузки ввести, вдруг я в чем-то ошибся?
Прошерстил Инет, и нашел, как мне кажется, полную, даже может быть, избыточную строку, с объяснениями, что каждый параметр делает, и даже с параметрами
для архитектуры PowerPC. Ненуачо? Шоббуло! :)


Вот строка, которая ну уж включает все что можно :)
noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off tsx=on tsx_async_abort=off mitigations=off

Назовем ее "AllParams"

RedMi на батареях c AllParams
Время выполнения: 461433 мс

Ну блин.. те же.. вид сбоку, короче.

Да, короче надо сказать, что размер архива Bzip2 в режиме сжатия по умолчанию составляет 535 мегабайт.
Т.е. сжатие примерно в 4.4 раза в пользу Zstandard! Неплохо.
 

Потом пришла такая мысль. Может быть архиватор bz2 не очень правильный бенчмарк, может он слишком узко тестирует возможности процессора?
Может, все эти заплатки и ускорялки дадут больше эффекта при многопоточном режиме? А?
А не попробовать ли архиватор ZStandard - новый, модный, молодежный?
Я где-то слышал, что он-то как раз использует многопоточность вовсю!

Сказано - сделано!

RedMi на батареях без GRUB параметров Zstd
Время выполнения: 22768 мс

Фига се! Время сократилось более чем в 20 раз! (как раз грубо равно числу ядер процессора RedMi)
Правда, честно говоря, размер архива тоже стал поболее - не 535 мегабайт, а 689.
Но Zstd способен и на лучшее - см. ниже.

RedMi на розетке без GRUB параметров Frequency Boost Zstd
Время выполнения: 7846 мс
Второй прогон: 7584 мс
(примерно в 19 раз быстрее чем bzip2)


RedMi на батареях с AllParams Zstd
Время выполнения: 22665 мс
Второй прогон: 23388 мс

RedMi на розетке с AllParams Frequency Boost Zstd
Время выполнения: 7862 мс


Ну, и переходим под конец к нашему Xeonо китайцу (кстати, бюджетнейшая платформа как для текстовых локальных ИИ экспериментов, так и игр!)

Xeon режим Balanced Zstd
Время выполнения: 19832 мс

Xeon режим Performance Zstd
Время выполнения: 19795 мс
Второй прогон: 20322 мс

Xeon с AllParams режим Balanced Zstd
Время выполнения: 18920 мс
Второй прогон: 19890 мс

Xeon с AllParams режим Performance Zstd
Время выполнения: 19400 мс


Тут я захотел поставить еще один эксперимент.. И решил попробовать Zstandard в режиме максимальной, я бы даже сказал, маниакальной степенью сжатия :)
Результат по времени не сохранился, но вроде он был примерно в 10 раз (!) дольше. Но зато архивчик занял 480 мегабайтиков - на 11 процентов меньше, чем Bzip2.
Стоит ли это такой дикой потери времени - решать вам.

Лайк, подписка, колокольчик :)

Ну а теперь вывыоды.

1. Самый главный. Может, я конечно что-то сделал не так... Но кмк ни о каком выигрыше в 30% и близко речи нет!
Конечно, использовались современные, актуальные процессоры и ядра. Те, для которых вообще имеет смысл повышать производительность.
Может, что-то повышается на древнючих компьютерах или древнючих ядрах...?
Но мой вам добрый совет - если вы обладатель такого железа, и хотите повысить производительность.. ну купите вы лучше связку Xeon-китайская мат платка за копейки. А?

А так разница в цифрах теряется в погрешности. Даже второй прогон теста (ну программки какие были открыты (хотя я старался не тревожить компьютеры попусту), не успел на мгновение разогнаться, повысить частоту, и т.д. - влияет на результат поболе, чем с GRUB-параметрами!

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

3. Не занимайтесь ерундой и не верьте слепо советам "гуру" на разных вебсайтах. Даже если когда-то был какой-то резон в каких-то оптимизациях, то с обновлением железа и ядер результат может быть немного (или совсем) не таким, как на момент написания статеек!

Впрочем, это относится ко всем областям знаний. Кроме, разве что, музыки :) Там правила и закон меняются намного реже. Даже реже, чем в астрономии :)
#Ключевые слова: Intel, Linux, Линукс, Роса, Rosa, Zstd, Zstandard, Xiaomi, Redmi, Gnome, Xanmod, Spectre, mitigations
Опубликовано: 2024-10-01

Боже ж мой, дошли до чтения статьей, а так и не решились зарегистрироваться у нас? Как же так? Подводите мышку сюда, и нажимаете! Всего делов!

Попасть в "15 мин. Славы" ⇩