В OpenBSD добавлен код программного отключения SMT (HyperThreading)

Вскоре после заявления Тео де Раадта о наличии аппаратной уязвимости, связанной с реализацией в них технологии одновременной многопоточности (simultaneous multithreading), более известной под названием HyperThreading, в OpenBSD был разработан патч, позволяющий де-факто отключить SMT на уровне ОС. Изначально проблема состоит в том, что в немалом количестве современных системных прошивок (BIOS/EFI), в первую очередь — в ноутбуках, отсутствует опция для отключения SMT в принципе.

Патч добавляет новый булевый sysctl—интерфейс «hw.smt», изначально выставляемый в 0 («отключено»). В этом режиме планировщик потоков выполнения следит, чтобы на двух виртуальных ядрах не запускалось одновременно два работающих потока выполнения. При переключении в 1 («включено») планировщик начинает допускать одновременную загрузку работой обоих виртуальных ядер.

Данный патч рассматривается как разумный компромисс между полным отключением SMP/SMT и игнорированием доступной информации об уязвимости. Так как ряд других ОС (как минимум, DragonFly BSD), судя по всему, также не обладает информацией о грядущих анонсах от Intel, стоит ожидать включения аналогичных патчей и для них тоже.

Стоит отметить, что несмотря на то, что в одних задачах использование SMT может увеличить производительность CPU на 30%, в других может даже снизить.

©  OpenNet