Технология одновременной многопоточности (SMT)
Введение
Технология одновременной многопоточности (англ. Simultaneous Multithreading, далее SMT, также известна как технология Intel® Hyper-Threading) позволяет одновременно исполнять инструкции из нескольких (как правило двух) потоков на одном физическом ядре процессора.
На некоторых классах задач использование SMT позволяет более эффективно использовать ресурсы центрального процессора.
Проблемы с безопасностью SMT
За последние годы были выявлены различные уязвимости, так или иначе связанные с технологией SMT:
- L1TF (L1 Terminal Fault,также используется название Foreshadow: https://www.securitylab.ru/news/495093.php, https://foreshadowattack.eu/):
- MDS (Microarchitectural Data Sampling: https://www.securitylab.ru/news/499094.php, https://mdsattacks.com/):
Как правило, уязвимости удаётся исправить с помощью программных обновлений, в том числе и микрокода центрального процессора. Однако в некоторых случаях может потребоваться отключение SMT.
Отключение SMT
Существует несколько способов отключения поддержки SMT:
в настройках BIOS или UEFI (аппаратный, перманентный)
через параметры загрузки ядра (программный,перманентный)
используя интерфейс управления SMT в Sysfs (программный, временный)
Аппаратное отключение SMT
Для аппаратного отключения SMT требуется перезагрузить в систему, зайти в настройки BIOS/UEFI, найти там опцию управления SMT (материнские платы для процессоров AMD) или Hyper Threading (материнские платы для процессоров Intel) и отключить её.
За дополнительной информацией обратитесь к документации от поставщика вашего оборудования.
Отключение SMT через параметры загрузки ядра
Для отключения SMT через параметры загрузки ядра необходимо добавить в
строку GRUB_CMDLINE_LINUX
в файле /etc/default/grub
аргумент
nosmt
:
$ sudo sed -i 's/GRUB_CMDLINE_LINUX="[^"]*/& nosmt/' /etc/default/grub
и обновить конфигурацию загрузчика:
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Для применения изменений необходимо перезагрузить компьютер. Проверить статус активности SMT можно с помощью следующей команды:
$ cat /sys/devices/system/cpu/smt/control
off
off
в выводе означает что технология SMT отключена, on
- включена.
Отключение SMT через Sysfs
Отключение SMT без перезагрузки возможно через интерфейс управления в Sysfs, однако данное решение является временным и будет действовать только до следующей перезагрузки компьютера:
$ echo off | sudo tee /sys/devices/system/cpu/smt/control