- PVSM.RU - https://www.pvsm.ru -
Один из самых частых вопросов в последнее время — как отражается на производительности Linux защита от Meltdown/Spectre, а теперь ещё и от L1TF/Foreshadow. Начало разработки ядра Linux 4.19 [1] в этом месяце подлило масла в огонь не только для x86_64, но и для POWER/s390/ARM. Чтобы получить общее представление о влиянии патчей на производительность, я протестировал три системы Intel Xeon и две системы AMD EPYC, а также виртуальную машину с каждой стороны, чтобы оценить производительность ядра Linux 4.19 по умолчанию с соответствующими патчами и без них.
На всех машинах была установлена система с ядром Linux 4.19-rc1, выпущенным в минувшие выходные. На Intel соответствующие патчи включают изоляцию таблиц страниц (PTI/KPTI) для Meltdown и различные патчи Spectre против спекулятивного исполнения команд, в том числе очистку указателя __user, использование retpoline через IBPB IBRS_FW, патч для уязвимости Speculative Store Bypass с помощью prctl и seccomp, а также инверсию PTE и сброс условного кэша в виртуальных машинах — это для L1TF/Foreshadow.
По умолчанию ядро Linux не обеспечивает «полную» защиту от уязвимостей путём отключения поддержки Intel HT/SMT, поэтому имейте это в виду, если используете виртуальные машины и предоставляете ненадёжному коду или пользователям доступ к VM. Если выбрать полную защиту и отключить SMT, то влияние на производительность намного заметнее [2] из-за сокращения вдвое числа доступных потоков. Провайдеры облачных сервисов, похоже, просто настраивают планировщики, чтобы потоки SMT не проходили через пользователей. Это позволяет избежать очевидных огромных затрат на отключение Hyper Threading. Так что сейчас мы сравниваем только защиту стокового/дефолтного ядра.
На AMD EPYC по умолчанию реализована защита только для соответствующих уязвимостей, которые их касаются: это очистка указателя __user для Spectre V1, AMD Retpoline IBPB для Spectre V2 и отключение Speculative Store Bypass (SSBD) для Spectre V4.
После тестирования всех конфигураций на стоковом ядре Linux 4.19-rc1 тесты повторили с применением различных переключателей защиты в рантайме [3]. Все системы тестировались с Ubuntu 18.04.1 LTS x86_64 с ядром Linux 4.19-rc1 через Ubuntu Mainline Kernel PPA, последними микрокодами/BIOS, GCC 7.3 и файловой системой EXT4.
Конфигурации систем в тесте:
Очевидно, конфигурации машин разные и они не предназначены для сравнения друг с другом, а именно для проверки включения/отключения защиты от уязвимостей процессоров на ядре Linux 4.19. Поэтому для наглядности все данные нормализованы по производительности каждой системы. Все тесты из набора Phoronix Test Suite [4].
Для статьи выбраны тесты, которые имеют отношение к Spectre/Meltdown, то есть с интенсивным вводом-выводом или взаимодействиями ядра. Нагрузка идёт просто на CPU и не сильно зависит от процессорного кэша.
Профиль CompileBench — вероятно, самый простой способ показать влияние Spectre/Meltdown. На ядре Linux 4.19 при активации защиты процессоры Intel демонстрируют снижение производительности на 7−16%., а процессоры AMD — на 3−4%.
Похожая ситуация в подтестах с чтением скомпилированного дерева. У процессоров Intel снижение производительности на 14−15%, у AMD — на 4−5%.
В реальных задачах вроде компиляции ядра Linux разница в производительности будет в районе 2%.
Бенчмарк планировщика ядра Hackbench тоже страдает от активации защиты. В процессорах Intel производительность снижается примерно на 20%, кроме Xeon Gold. В системах AMD EPYC особой разницы нет.
Сервер баз данных PostgreSQL — одно из реальных приложений, которое пострадало от снижения производительности после установки защиты на процессоры. В этом конкретном тесте разница для процессоров Intel составила 5−8%, а у EPYC — 1%.
Ещё одна реальная программа со снижением производительности из-за Spectre/Meltdown — графический редактор GIMP. Разница для Intel составляет 5−10%, для AMD — 0−2%.
СУБД Redis на системе Intel Skylake E3 v5 замедляется на 11%, а на других процессорах Intel — на 5−7%, у систем AMD EPYC разница составляет 1−5%.
Веб-сервер Nginx на протестированных системах Xeon на ядре Linux 4.19 показал разницу в производительности до 20%, а на AMD EPYC — от 1−2% до 6%.
Аналогично и веб-сервер Apache при дефолтной установке работает значительно медленнее после активации защиты на процессорах Intel и практически без изменений на процессорах AMD.
В тесте на скорость создания файлов OSBench система на Intel Xeon замедляется на 13−16%, а системы EPYC — на 6−9%.
В тесте на создание потоков тоже видна ощутимая разница между процессорами Intel и AMD.
При запуске программ и создании процессов есть меньшая, но заметная в работе ядра Linux 4.19 по умолчанию по сравнению с отключенной защитой.
Вот так обстоят дела с производительностью процессоров на ядре Linux 4.19 после установки патчей. Имейте в виду, если ваша система (системы) открыта для ненадёжных пользователей/кода, особенно в виртуальных машинах, то для защиты могут потребоваться дополнительные действия, такие как l1tf=full, вплоть до отключения SMT/HT или обязательного сброса кэша L1, что ещё больше снизит производительность систем. О влиянии этих защит от L1TF/Foreshadow более подробно рассказано в прошлой статье [2].
Возможно, в будущем мы проведём похожие тесты на Linux 4.19 с десктопными процессорами и соответствующими рабочими нагрузками.
Автор: m1rko
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/291048
Ссылки в тексте:
[1] ядра Linux 4.19: https://www.phoronix.com/scan.php?page=search&q=Linux+4.19
[2] влияние на производительность намного заметнее: https://www.phoronix.com/scan.php?page=article&item=l1tf-foreshadow-xeon&num=1
[3] различных переключателей защиты в рантайме: https://www.phoronix.com/scan.php?page=news_item&px=Global-Switch-Skip-Spectre-Melt
[4] Phoronix Test Suite: https://www.phoronix-test-suite.com/
[5] Источник: https://habr.com/post/421931/?utm_campaign=421931
Нажмите здесь для печати.