Посмотрим, так ли это.
Ну, сначала какие опции можно включить.
Вариант первый. Советуют на Арч Вики, но, по другим источникам, оно работает только для ядер 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 там на основной диск монтируется) взял скрипт, который делает
(т.е. архивирует все в один файл 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