Технология одновременной многопоточности (SMT)

Введение

Технология одновременной многопоточности (англ. Simultaneous Multithreading, далее SMT, также известна как технология Intel® Hyper-Threading) позволяет одновременно исполнять инструкции из нескольких (как правило двух) потоков на одном физическом ядре процессора.

На некоторых классах задач использование SMT позволяет более эффективно использовать ресурсы центрального процессора.

Проблемы с безопасностью SMT

За последние годы были выявлены различные уязвимости, так или иначе связанные с технологией SMT:

Как правило, уязвимости удаётся исправить с помощью программных обновлений, в том числе и микрокода центрального процессора. Однако в некоторых случаях может потребоваться отключение 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