Показать сообщение отдельно
Непрочитано 27.01.2018, 16:03   #1
Аватар для n3k0nation
Antihero

Автор темы (Топик Стартер) Meltdown/Spectre/MDS performance

Meltdown/Spectre.
Недавно мне в репы прилетело новое ядро с патчем на мелтдаун и спектру. Так как исправление данных дыр сжирает от 20% до 50% производительности на старых интел процах (ниже скайлейка), то оно ненужно (кроме того, это должно быть исправлено на аппаратном уровне, а сейчас мы имеем кучу костылей, которые убивают огромный процент перформанса).
К тому же, данные уязвимости актуальны только на серверах с виртуализацией, для домашних хомяков или серверов без виртуализации, это просто является потерей производительности.




Версии ядра популярных дистрибутивов, начиная с которых присутствуют патчи для устранения уязвимостей:
Код:
RHEL 6/ CentOS 6 - 2.6.32-696.18.7
RHEL 7/ CentOS 7 - 3.10.0-693.11.6
Debian 7 - 3.2.0-5-amd64
Debian 8 - 3.16.0-5-amd6
Debian 9 - 4.9.0-5-amd64
Ubuntu 14.04 - 3.13.0-139-generic
Ubuntu 16.04 - 4.4.0-109-generic/ 4.13.0-26-generic
Ubuntu 17.10 - 4.13.0-25-generic
Также ряд хостеров поставляет в своих образах ядра, которые им же и модифицированы, например OVH. В таком случае версия ядра может отличатся о тех, которые описаны выше и там уже могут быть вшиты эти патчи.

Для того чтобы проверить вашу систему берём специальный bash скрипт:
https://github.com/speed47/spectre-meltdown-checker

Сохраняем к себе на сервер и выполняем (от root):
Код:
# sh spectre-meltdown-checker.sh
Если ваш сервер уязвим, то будет написано VULNERABLE, если нет, то NOT VULNERABLE соответственно.



Немного покопав гит кернеля линупса, были найдены замечательные коммиты, которые через передачу параметров кернелю выключают "чудо-патчи" (актуально для ванильных ядер):
https://git.kernel.org/pub/scm/linux...7cc83fefb8d537
https://git.kernel.org/pub/scm/linux...422eea71d473e0

Порядок действий на линупсах примерно такой:
  • Редактируем grub.cfg для передачи параметров:
    Код:
    $ su
    # nano /etc/default/grub
  • Далее вносим изменения в GRUB_CMDLINE_LINUX_DEFAULT, должно получится чето типа этого:
    Код:
    GRUB_CMDLINE_LINUX_DEFAULT="pti=off nospectre_v2"
    Также, можно вместо nospectre_v2 заюзать:
    Код:
    spectre_v2=off
  • Сохраняем, выходим и ре-генерим скрипты груба:
    Код:
    # update-grub

Для винды сносим данные KB и больше никогда их не ставим:
Код:
KB4056892 <-- W10 / Server 2016
KB4056891 <-- W10 
KB4056890 <-- W10 / Server 2016
KB4056888 <-- W10
KB4056893 <-- W10
KB4056898 <-- W8 / Server 2012 / W8 Embedded
KB4056895 <-- W8 / Server 2012 / W8 Embedded
KB4056897 <-- W7 / Server 2008 / W7 Embedded
KB4056894 <-- W7 / Server 2008 / W7 Embedded

Microarchitectural Data Sampling.
Новая уязвимость в Intel камнях, патчи под Linux уже подъехали. Галактико в опасностэ! Впрочем, с помощью данных уязвимостей на самом деле можно сделать интересные вещи. Но мне, как Неуловимому Джо, оно нахрен не нужно на домашних машинах, особенно с учетом еще одних потерь производительности в виде 30-40 процентов.

Для отключения достаточно передать несколько параметров в ядро:
Код:
mds=off mitigations=off
По мауналу выше втыкаем эти параметры в GRUB_CMDLINE_LINUX_DEFAULT, который лежит в /etc/default/grub и перегенериваем скрипты загрузчика update-grub.
Не забываем включить назад HT, ну, либо можно не включать.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.

Последний раз редактировалось n3k0nation; 17.05.2019 в 13:45.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо: