Как заставить систему Linux работать быстрее на процессорах Intel
Вероятно, вы слышали об уязвимостях Meltdown и Spectre, которые затронули многие современные процессоры, в том числе некоторые процессоры Intel, AMD, System Z, Power и ARM. К счастью, разработчики ядра выпустили исправления безопасности для решения проблем Meltdown/Spectre. В последних версиях ядра исправления реализованы по умолчанию. Хотя исправления безопасности помогают устранить уязвимости, они также влияют на производительность системы. Да, эти меры приведут к снижению производительности. Если вы уверены, что ваши системы хорошо защищены, и хотите получить от своей личной системы максимальную производительность, это руководство для вас. В этом кратком руководстве объясняется, как заставить систему Linux работать быстрее на процессорах Intel, отключив средства защиты Spectre и Meltdown.
Предупреждение
Прежде чем реализовать следующее решение, я должен вас предупредить: ЭТО КРАЙНЕ НЕБЕЗОПАСНО И НЕ РЕКОМЕНДУЕТСЯ. Это отключит все меры по смягчению последствий Spectre и Meltdown на процессорах Intel и сделает ваши системы Linux широко открытыми для всех угроз безопасности. Если вы четко не знаете, что делаете, не делайте этого. Вы были предупреждены!
Если вас просто не волнует безопасность, отключите меры по снижению риска, как описано ниже.
Заставьте систему Linux работать быстрее на процессорах Intel
Отредактируйте файл GRUB, используя предпочитаемый вами текстовый редактор.
В Debian, Ubuntu:
sudo nano /etc/default/grub
Если вы используете ядро Linux версии 5.1.13 и новее, добавьте/измените следующий параметр ядра, как показано ниже:
GRUB_CMDLINE_LINUX="mitigations=off"
Это отключит все дополнительные меры по снижению нагрузки на ЦП. Это повышает производительность системы, но также может подвергнуть пользователей ряду уязвимостей ЦП.
Если вы используете версии ядра старше 5.1.13, вместо этого добавьте/измените следующее:
GRUB_CMDLINE_LINUX="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"
Это параметры ядра, которые вы можете использовать для отключения всех средств защиты Spectre/Meltdown, замедляющих работу вашей системы Linux.
Знайте, что делает каждый флаг:
- noibrs — отключить спекуляцию с ограничением косвенных ветвей в микрокоде.
- noibpb — отключить барьеры косвенного прогнозирования ветвей.
- nopti — то же самое, что и pti=off. Таблица страниц управления. Изоляция адресного пространства пользователя и ядра. Отключение этой функции устраняет усиление защиты, но повышает производительность системных вызовов и прерываний.
- nospectre_v2 — отключить все меры по устранению уязвимости Spectre варианта 2 (косвенное предсказание ветвления). С помощью этой опции система может допускать утечку данных, что эквивалентно spectre_v2=off.
- nospectre_v1 — отключить средства защиты для варианта Spectre 1 (обход проверки границ). При использовании этой опции возможны утечки данных в системе.
- l1tf=off — контролирует устранение уязвимости L1TF на затронутых процессорах. Защита от инверсии PTE ядра включена безоговорочно и не может быть отключена. Отключает средства защиты гипервизора и не выдает никаких предупреждений. Он также снижает размер подкачки и ограничение доступного объема оперативной памяти как для гипервизора, так и для «голого железа».
- nospec_store_bypass_disable — отключить все меры по устранению уязвимости Speculative Store Bypass.
- no_stf_barrier – отключить барьер пересылки в магазин (только для PPC).
- mds=off — контроль устранения уязвимости микроархитектурной выборки данных (MDS).
- tsx=on — включение поддержки Intel TSX (расширений синхронизации транзакций).
- tsx_async_abort=off — отключить смягчение последствий TAA (TSX Async Abort).
- mitigations=off — отключить все меры по смягчению последствий.
Для получения более подробной информации о каждом флаге выполните быстрый поиск в Google.
После добавления параметров ядра обновите конфигурацию GRUB с помощью команды:
sudo update-grub
Наконец, перезагрузите систему:
sudo reboot
В системах на базе RPM, таких как CentOS и RHEL, отредактируйте файл /etc/sysconfig/grub:
sudo /etc/sysconfig/grub
Добавьте вышеуказанные параметры в GRUB_CMDLINE_LINUX. А затем обновите конфигурацию GRUB с помощью команды:
sudo grub2-mkconfig
Наконец перезагрузка:
sudo reboot
В некоторых системах Linux вам может потребоваться добавить эти параметры ядра в "GRUB_CMDLINE_LINUX_DEFAULT="...".
Мы отключили все меры по смягчению последствий Spectre и Meltdown. Это немного повысит производительность вашей системы, но также может подвергнуть пользователей нескольким уязвимостям процессора.
Проверьте, отключены ли меры по смягчению последствий Spectre/Meltdown.
Мы можем использовать инструмент "spectre-meltdown-checker", который поможет вам выявить уязвимости Spectre и Meltdown в Linux. Он доступен в официальных репозиториях некоторых дистрибутивов Linux.
В Дебиане, Убунту:
sudo apt install spectre-meltdown-checker
В CentOS RHEL:
sudo yum install epel-release
sudo yum install spectre-meltdown-checker
В Федоре:
sudo dnf install $ sudo apt install spectre-meltdown-checker
После установки spectre-meltdown-checker запустите его от имени пользователя root или с привилегиями sudo, чтобы проверить, отключены ли меры по смягчению последствий Spectre и Meltdown:
Вы должны увидеть сообщение, подобное приведенному ниже.
[...]
> STATUS: VULNERABLE (Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers)
[...]
> STATUS: VULNERABLE (IBRS+IBPB or retpoline+IBPB is needed to mitigate the vulnerability)
[...]
> STATUS: VULNERABLE (PTI is needed to mitigate the vulnerability)
Альтернативно вы можете проверить уязвимости Spectre/Meltdown, как показано ниже.
ls /sys/devices/system/cpu/vulnerabilities/
Пример вывода:
itlb_multihit l1tf mds meltdown spec_store_bypass spectre_v1 spectre_v2 tsx_async_abort
И..
grep . /sys/devices/system/cpu/vulnerabilities/*
Пример вывода:
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Vulnerable
/sys/devices/system/cpu/vulnerabilities/l1tf:Mitigation: PTE Inversion
/sys/devices/system/cpu/vulnerabilities/mds:Vulnerable; SMT Host state unknown
/sys/devices/system/cpu/vulnerabilities/meltdown:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Vulnerable, STIBP: disabled
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
Запустите несколько тестов и проверьте, какую производительность вы выиграете, а затем решите, стоит ли все отключать.
Как я уже предупреждал, этот совет — полезный и разумный вариант для домашних или однопользовательских компьютеров. Но не рекомендуется для производственных систем.
Ресурсы:
- https://make-linux-fast-again.com/
- Параметры ядра.txt