Intel Xeon Broadwell vs. Skylake: жизнь после Spectre
Честно говоря, с тестами серверных процессоров у нас с самого начала как-то не заладилось. На предварительную подготовку и получение доступа к серверам суммарно был потрачен не один месяц. И… уже во время тестирования пришла «замечательная» весть о четвёртом варианте уязвимости класса Spectre/Meltdown. Правда, грядущие патчи по умолчанию будут отключены, так как уже имеющаяся защита от первых версий этих же уязвимостей значительно усложняет использование новой. Мало того, в тот момент, когда пишутся эти строки, в интернете уже гуляют слухи об очередной уязвимости в CPU Intel.
Совсем коротко и на понятном языке про Spectre и Meltdown рассказано в этом материале. Опять-таки не вдаваясь в подробности, напомним, что этот класс уязвимостей позволяет при некоторых манипуляциях на современных процессорах получить несанкционированный доступ к данным. Несмотря на то, что в «дикой природе» так до сих пор и не было выявлено ни одного массового зловреда, использующего такой тип атак, это не значит, что защищаться от них не следует.
Базовую защиту обеспечивают программные патчи в ядре, которые уже почти полгода как получили все популярные ОС. Однако для полной защиты требуется наличие обновления в первую очередь микрокода процессоров. Побочный эффект от этого выражается в том, что появляются дополнительные проверки и задержки в работе CPU. А это уже выливается в снижение производительности в той или иной степени. При этом эффект для CPU неодинаков: более современные модели за счёт новых инструкций и особенностей страдают от таких патчей в меньшей степени.
Для серверов, которые чаще всего заняты обработкой важных данных, эти патчи жизненно необходимы. Так что с начала этого года мы вынуждены жить с различными заплатками против уязвимостей. В каком-то смысле это новая эпоха, потому что и все последующие модели CPU будут содержать изменения на аппаратном уровне, направленные на избавление от уязвимостей в механизмах предсказания ветвлений. Пока что таковых нет, но уже сейчас есть смысл посмотреть на производительность CPU после патчей прошивок и микрокода, а также обновить методику тестирования серверных компонентов.
Итак, что нам нужно? Две как можно более близкие конфигурации с процессорами разных поколений, которые, в свою очередь, тоже должны быть по возможности близкими. Что у нас получилось? Точнее, к чему нам дали доступ? К двум двухсокетным материнским платам производства той же Intel: S2600WT и S2600WF. Обе платы имели последний стабильный на момент написания материала вариант прошивки с патчами — для микрокода — против Spectre/Meltdown v.1/2/3, но не варианта 4, увы (см. скриншоты ниже). Обе машины получили 64 Гбайт RDMIMM DRR4-2133 ECC: по 8 модулей Samsung M393A1G40DB0-CPB. Да, Skylake-сервер поддерживает до 6 каналов памяти DDR4-2666, но фактически работал он именно в четырёхканальном режиме, как и Broadwell-сервер, — по два модуля на канал. Это было сделано умышленно.
В качестве системного диска для ОС — стабильная версия Debian 9.4 — использовался SATA SSD DC S3500 ёмкостью 300 Гбайт. Впрочем, тесты проводились на новеньких NVMe-накопителях Intel SSD DC P4510 ёмкостью 2 и 8 Тбайт — /var на обеих машинах был смонтирован именно на них. Все диски имели файловую систему ext4. Заодно с тестом CPU были сделаны и небольшие тесты этих накопителей. Наконец, несколько слов о CPU. Нам достались Intel Xeon E5-2690 v4 и Xeon Gold 6140. Они находятся примерно в одной ценовой категории: почти $2 100 и $2 450 соответственно. При этом различаются они всё же существенно. На стороне Skylake большее число ядер (18 против 14) и чуть более высокая турбочастота (3,7 ГГц против 3,5 ГГц). В пользу Broadwell играет в полтора раза более объёмный L3-кеш (35 Мбайт против 24,75 Мбайт) и повышенная базовая частота (2,6 ГГц против 2,3 ГГц).
TDP и предельная рабочая температура обоих CPU практически одинаковы: 135/140 Вт и 89/91 °C. Впрочем, это как раз указывает на то, что описанные выше различия лишь поверхностны. Гораздо больше изменений приходится на архитектуру. Даже техпроцесс, обозначенный как «14 нм», не совсем один тот же. Особенности строения и работы обоих поколений Intel Xeon описаны в соответствующих материалах: Broadwell-EP и Skylake-SP. Отдельно останавливаться мы на них здесь не будем. Отметим лишь, что для обеих систем CPU scaling governor (кажется, более адекватного перевода, чем «регулятор производительности», для этого термина нет) был переведён в режим performance — для серверов это допустимый и разумный вариант регулировки мощности процессоров.
Для тестирования использовался пакет Phoronix Test Suite (PTS) версии 7.8 в виде deb-пакета, взятого с официального сайта. Да, для получения абсолютных показателей он не очень годится, так как все бенчмарки компилируются непосредственно на тестируемых машинах и параметры сборки порой далеки от оптимальных — для некоторых тестов, например, сделан сознательный отказ от современных инструкций типа AVX в угоду стабильности. Примерно то же самое можно ожидать и от бинарных сборок софта во многих дистрибутивах. Впрочем, для сравнения производительности двух и более систем PTS подходит. Кроме того, мы надеемся и далее использовать уже подобранный набор тестов для оценки серверов.
Все результаты тестов находятся в открытом доступе. ПО собрано с помощью GCC 6.3.0 и Clang 3.8.1-24. Ядро ОС содержало все актуальные на момент тестирования портированные патчи против Meltdown и Spectre v.1/2/3, плюс были установлены обновления микрокода самих CPU. В таблице приведены некоторые результаты тестов, которые успешно завершились на обеих машинах и были собраны с одинаковыми параметрами. Результаты тестирования FIO и других бенчмарков для накопителей Intel SSD DC P4510 смотрите по ссылке выше, здесь они умышленно не приведены. Впрочем, они по большей части очень схожи на обеих машинах. Кроме того, по ссылке можно также посмотреть уровень погрешности для ряда бенчмарков.
Основные тесты сведены в одну большую таблицу. За базовый уровень (100 %) взяты показания с машины с Intel Xeon E5-2690 v4. В четвёртой колонке дано указание на то, что лучше — увеличение результата теста или уменьшение. В соответствии с этим зелёным цветом в последней колонке обозначен прирост производительности для Xeon Gold 6140, а красным её снижение или отсутствие роста. На первый взгляд всё просто замечательно, за исключением лишь некоторых бенчмарков. На глаз рост в среднем достигает где-то 40%, а нижняя граница находится около 15%. Если провалы и есть, то они находятся на уровне менее 10%. В общем, всё вроде бы укладывается в прошлогодние обещания: «ПО, оптимизированное для Broadwell, без перекомпиляции в среднем получит +10 % скорости на ядрах Skylake-SP».
Однако на практике нужно учесть ещё кое-что. Разница в четыре ядра между процессорами фактически выливается в 16 потоков (2 × [CPU + HT]), что уже существенно. Поэтому мы выбрали и пересчитали прирост на ядро из всей пачки бенчмарков для тех, которые теоретически хорошо масштабируются и могут реально задействовать все ядра. Но теоретически именно потому, что, к примеру, результат CLOMP указывает на не самое лучшее распараллеливание с OpenMP. С другой стороны, некоторые результаты (рендер + БД) не просто удивляют, а даже настораживают — настолько велик и общий прирост, и прирост на ядро.
На десерт у нас есть ещё кое-что. Помните первые тесты IBM POWER9? Так вот, этот же набор тестов был сделан и на вверенных нам машинах. Собственно, среди результатов есть смысл смотреть только на показатели AMD EPYC 7601 (32 ядра/64 потока, 2,2/3,2 ГГц, 64 Мбайт L3-кеш, TDP 180 Вт, 14 нм, ≈ $4 000), но и то очень аккуратно, потому что с нашими тестовыми машинами совпадение есть только в объёме/наборе RAM. Однако частота модулей заметно выше, система работает на Intel Optane, а данных о патчах прошивки против Spectre/Meltdown нет. И это уж не говоря о более свежих компиляторе и ядре.
На помощь можно призвать Капитана Очевидность и отметить, что новые процессоры (м-м, почти новые, им уж скоро год всё-таки) лучше старых — быстрее и производительнее при тех же цене и TDP. С учётом того, что в дата-центрах и других крупных инсталляциях средний срок жизни CPU составляет от трёх-четырёх лет, прирост будет ещё более заметен — даже без должной оптимизации под новую архитектуру и увеличившееся число потоков. После заплаток разница между поколениями меньше не стала, так что годичной давности обещания Intel относительно производительности всё ещё в силе. Увы, сравнить результаты с показателями систем без заплаток не удалось.
Так что полученные результаты пока что не слишком ценны сами по себе, но мы надеемся в дальнейшем расширить список протестированных систем с тем же набором бенчмарков. В связи с этим очень интересно, что будет с грядущими Xeon — получат ли они реальную аппаратную защиту, или Intel обойдётся мягкими мерами вроде предварительного накладывания заплаток на микрокод, пусть и ценой снижения итоговой производительности? И да, здесь мы совершенно обошли стороной другие нововведения в Skylake-SP, касающиеся в первую очередь ввода-вывода и ускорения некоторых операций. Но об этом как-нибудь в другой раз. Впрочем, если у вас есть пожелания по включению в набор каких-то других тестов, не стесняйтесь написать об этом в комментариях.