Вплив захисту від Spectre, Meltdown і Foreshadow на продуктивність Linux 4.19

Одне з найбільш частих питань останнім часом — як позначається на продуктивності Linux захист від Meltdown/Spectre, а тепер ще й від L1TF/Foreshadow. Початок розробки ядра Linux 4.19 в цьому місяці підлило масла у вогонь не тільки для 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, то вплив на продуктивність набагато помітніше через скорочення вдвічі числа доступних потоків. Провайдери хмарних сервісів, схоже, просто налаштовують планувальники, щоб потоки SMT не проходили через користувачів. Це дозволяє уникнути очевидних величезних витрат на відключення Hyper Threading. Так що зараз ми порівнюємо тільки захист стокового/дефолтного ядра.

На AMD EPYC за замовчуванням реалізований захист тільки для відповідних вразливостей, які їх стосуються: це очищення покажчика __user для Spectre V1, AMD Retpoline IBPB для Spectre V2 і відключення Speculative Store Bypass (SSBD) для Spectre V4.

Читайте також  SEO-оптимізація картки товару: покрокова інструкція + лайфхаки

Після тестування всіх конфігурацій на стоковому ядрі Linux 4.19-rc1 тести повторили з застосуванням різних перемикачів захисту в рантайме. Всі системи тестувалися з Ubuntu 18.04.1 LTS x86_64 з ядром Linux 4.19-rc1 через Ubuntu Mainline Kernel PPA, останніми микрокодами/BIOS, GCC 7.3 і файлової системи EXT4.

Конфігурації систем у тесті:

  • Intel Xeon E3-1280 v5 Skylake на материнській платі MSI Z170A SLI PLUS, 16 ГБ DDR4 і 256 ГБ Toshiba RD400 NVMe SSD.
  • Intel Xeon E5-2687W v3 Haswell на материнській платі MSI X299 SLI PLUS, 32 ГБ DDR4 і 80 ГБ Intel 530 SATA 3.0 SSD.
  • Два Intel Xeon Gold 6138 в стійці Tyan 1U з 96 ГБ RAM і Samsung 970 EVO NVMe SSD 256 ГБ.
  • Віртуальна машина KVM на вищезгаданому двухпроцессорном сервері Xeon Gold. Ця VM була єдиним активним процесом на машині і була налаштована на доступ до 80% ядер/потоків CPU (64 потоку), 48 ГБ RAM і віртуального диска 118 ГБ. Під час тестування захист від вразливостей відключалася і на хості, і в VM.
  • AMD EPYC 7601 на сервері Tyan 2U з 128 ГБ RAM і 280 ГБ Intel Optane 900p NVMe SSD.
  • Віртуальна машина KVM на вищезгаданому сервері AMD EPYC 7601. У неї доступ до 80% ядер/потоків CPU (52 потоку), 48 ГБ RAM і віртуального диска 120 ГБ.
  • Сервер AMD EPYC 7551 на материнській платі Gigabyte MZ31-AR0 з 32 ГБ RAM і Samsung 960 EVO 256GB NVMe SSD.

Очевидно, конфігурації машин різні, і вони не призначені для порівняння один з одним, а саме для перевірки включення/відключення захисту від вразливостей процесорів на ядрі Linux 4.19. Тому для наочності всі дані нормалізовані по продуктивності кожної системи. Всі тести з набору Phoronix Test Suite.

Читайте також  Радіоактивні предмети серед нас

Для статті обрані тести, які мають відношення до 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%.

Читайте також  Що записано в файлі .ssh/known_hosts

У тесті на створення потоків теж видно відчутна різниця між процесорами Intel і AMD.

При запуску програм і створення процесів є менша, але помітна різниця в роботі ядра Linux 4.19 за замовчуванням порівняно з відключеною захистом.

Ось так йдуть справи з продуктивністю процесорів на ядрі Linux 4.19 після установки патчів. Майте на увазі, якщо ваша система (системи) відкрита для ненадійних користувачів/коду, особливо у віртуальних машинах, то для захисту можуть знадобитися додаткові дії, такі як l1tf=full, аж до відключення SMT/HT або обов’язкового скидання кешу L1, що ще більше знизить продуктивність систем. Про вплив цих захистів від L1TF/Foreshadow більш докладно розказано в минулій статті.

Можливо, в майбутньому ми проведемо схожі тести на Linux 4.19 з десктопними процесорами і відповідними робочими навантаженнями.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *