Мы регулярно публикуем статьи о новых процессорах компании Intel, которая в течение многих лет остаётся лидером на рынке серверных решений. Однако в последнее время ситуация меняется: другие игроки активно заявляют о себе. В марте этого года компания AMD выпустила процессоры серии EPYC, о которых появляются интересные и в целом положительные отзывы (например, статья на сайте Anandtech). Но лучше один раз увидеть и потрогать руками, чем читать сотни статей в специализированных журналах и в Интернете.
Впрочем, заслуживающих внимания статей было не так уже и много. Более того, компания AMD с самого момента появления процессоров не публиковала почти никаких технических и маркетинговых материалов: на текущий момент они исчерпываются статьей AMD EPYC SoC Sets 4 World Records on SPEC CPU Benchmarks, которая имеет скорее маркетинговый, чем технический характер.
Возможность всё попробовать самим нам представилась: недавно коллеги из компании ASUS предоставили нам для тестирования сервер на базе процессора AMD EPYC 7351. Мы решили сравнить его с процессорами линейки Intel Skylake SP и провести тесты производительности. Результаты тестирования и их детальный анализ приводятся ниже.
Несколько замечаний о методике тестирования
При выборе методики мы руководствуемся в первую очередь принципом практической полезности. Здесь наша точка зрения совпадает с позицией авторов статьи Методика тестирования производительности компьютерных систем образца 2011 года (версия 5.0): во время тестов должны выполняться задачи, максимально приближенные к тем, для решения которых сервер будет использоваться на практике.
Синтетические тесты сведены к необходимому минимуму: мы проводим их исключительно для того, чтобы получить общее представление о возможностях процессорах (которое в ходе дальнейших экспериментов может быть скорректировано) и сравнить наши результаты с опубликованными в специализированной прессе и Интернете. Гораздо больший интерес для нас представляют задачи, которые в повседневной практике решаем мы и наши потенциальные пользователи: например, обработка больших объёмов данных, компиляция сложного ПО, работа с СУБД под большой нагрузкой и другие.
В рамках эксперимента, о котором пойдёт речь ниже, были проведены следующие тесты:
- базовый набор синтетических тестов (мы использовали Geekbench);
- компиляция набора библиотек Boost;
- тест для оценки работы с памятью (мы использовали бенчмарк STREAM);
- бенчмарки NAMD (очень хорошо помогают оценить производительность вычислений с плавающей точкой).
Общие технические характеристики
В нашем тесте были задействованы три сервера:
- CPU AMD EPYC 7351/516 ГБ RAM/2×800ГБ SSD;
- CPU Intel Xeon Gold 6140/384 ГБ RAM/2×800ГБ SSD;
- СPU Intel Xeon Silver 4114/384 ГБ RAM/2×800 ГБ SSD.
На всех трех серверах была установлена ОС Ubuntu 16.04.
В таблице ниже представлены подробные технические характеристики всех процессоров:
Характеристика | Intel Xeon Silver 4114 | Intel Xeon Gold 6140 | AMD Epyc 7310 |
---|---|---|---|
Технологический процесс | 14 нм | 14 нм | 14 нм |
Количество ядер | 10 | 18 | 16 |
Количество потоков | 20 | 36 | 32 |
Базовая частота | 2,20 ГГц | 2,30 ГГц | 2,40 ГГц |
Максимальная частота Turbo | 3,00 ГГц | 3,70 ГГц | 2,90 ГГц |
Кэш L3 | 13,75 МБ | 24,75 МБ | 64 МБ |
TDP (thermal design power) | 85 Вт | 140 Вт | 155/170 Вт |
Микроархитектура Zen: краткая справка
Процессоры AMD Epyc построены на базе микроархитектуры Zen, которая впервые была представлена в начале этого года (если точнее — 2 марта). Она используется не только в серверных, но и в десктопных решениях (процессоры AMD Ryzen). Как и в процессорах Ryzen, в Epyc используются восьмиядерные кристаллы, которые состоят из двух модулей CCX. CCX — это сокращение от Core Complex. Так в AMD называется модуль из четырёх процессорных ядер с общим кэшем третьего уровня.
Как видно из таблицы выше, у процессоров AMD Epyc 16 ядер. Технически это реализовано так: два восьмиядерных кристалла соединены при помощи шины Infinity Fabric. Они имеют общий контроллер памяти и общий хаб PCI Express.
Подробно описывать особенности микроархитектуры Zen мы не будем, тем более, что в Интернете уже представлено немало обстоятельных публикаций на эту тему (рекомендуем, например, статью AMD Zen Microarchitecture: Dual Schedulers, Micro-Op Cache and Memory Hierarchy Revealed). Остановимся лишь на наиболее значительных улучшениях, в числе которых стоит выделить следующие:
- два потока на ядро (технология Simultaneous Multi-Threading, или просто SMT, которую можно рассматривать как своего рода аналог hyperthreading);
- кэш декодированных микроопераций;
- поддержка новых наборов инструкций (AVX, AVX2, BMI1 и BMI2, AES, SHA1/SHA256, RDSEED, SMAР и многих других, в том числе и специфичных для AMD);
- большая унифицированная кэш память второго уровня (512 КБ на ядро).
Не поддерживаются (и в этом заключается важное отличие процессоров EPYC от Хеоn) наборы инструкций AVX512, SGX (Software Guard Extensions) и MPX (Memory Protection Extensions). Вряд ли это можно считать недостатком в строгом смысле слова — разработчики AMD просто решили пойти другим путём (подробнее об этом можно прочитать, например, в этой несколько устаревшей, но все равно интересной публикации EPYC Offers x86 Compatibility).
Слабым местом процессоров AMD в сравнении с Intel долгое время считалась энергоэффективность. При создании линейки EPYC была проделана большая работа по устранению соответствующих недостатков. Для улучшения энергоэффективности и снижения энергопотребления были в AMD EPYC используются новые технологии, в том числе динамическое изменения частоты и напряжения в зависимости от температуры и загрузки процессорных ядер.
С помощью используемых алгоритмов энергоэффективности можно распознать, чувствительна ли к задержкам текущая загрузка, и при необходимости снизить частоту ядра для оптимизации производительности на ватт потребления энергии. Также в процессорах Epyc реализована функция линейного регулирования питания отдельно по ядрам. Каждое ядро может работать с собственной частотой и напряжением, если это обусловлено загрузкой и другими факторами.
Взгляд в общих чертах: базовые синтетические тесты
Тесты Geekbench
После разбора теоретических моментов самое время приступить к тестам и анализам их результатов. Для начала мы решили посмотреть, какие результаты покажет процессор AMD EPYC 7351 при выполнении самых распространённых синтетических тестов. О нашем отношении к синтетическим тестам мы уже сказали выше: мы используем их исключительно в качестве отправной точки для размышлений и выдвижения гипотез, и не более.
Мы выбрали Geekbench — это комплект синтетических тестов, по результатам выполнения которых начисляются баллы и создаётся очень подробная и наглядная диаграмма. Собственные результаты можно загрузить на сайт и сравнить с результатами, полученными другими пользователями.
Полный перечень тестов, включенных в комплект, приводится в официальной документации. И хотя Geekbench имеет репутацию теста, предназначенного в первую очередь для десктопных компьютеров, он включает неплохой набор стандартных серверных бенчмарков.
Сначала мы запустили Geekbench на двух серверах: с AMD EPYC и c Intel Xeon Gold 6114.
Были получены следующие результаты:
- browser.geekbench.com/v4/cpu/4807485 — Intel Xeon Gold (4399 баллов по тестам одноядерной производительности и 74097 — по тестам многоядерной);
- browser.geekbench.com/v4/cpu/4859969 — Intel Xeon Silver (3410 — одноядерная производительность, 43971 — многоядерная производительность);
- browser.geekbench.com/v4/cpu/4807276 —AMD (3737 баллов — одноядерная производительность и 61235 — многоядерная ).
Получилась следующая картина: AMD Epyc показал себя лучше, чем Silver, но хуже, чем Gold. Впрочем, зная цену синтетическим тестам, подробно на разборе цифр останавливаться мы не будем.
Пропускная способность памяти: бенчмарк STREAM
Микроархитектура процессоров Intel и AMD существенно отличается. В этой связи было бы интересно посмотреть, как задействованные в нашем тесте процессоры работают с подсистемой памяти. Для этого мы воспользовались известным бенчмарком STREAM.
Это синтетический тест, в ходе которого измеряется пропускная способность при работе с установившимися массивами данных. С более подробным описанием этого бенчмарка можно ознакомиться в статье Джона МакАлпина. Если говорить кратко, STREAM — это довольно простая программа на C, выполняющая векторную операцию вида a(i) = b(i) + q*c(i), тип данных double (64 bit), q — константа. Используется в тестах для оценки производительности суперкомпьютеров (например, в HPC Challenge Benchmark).
В нашем случае была ещё одна сложность: конфигурации серверов были не совсем равноценными. У AMD больше каналов памяти — 8, чем у процессоров Intel (по 6 каналов у каждого).
Тем не менее, мы тест провели, и результаты получились весьма любопытные. В целом они совпадают с теми, что получили авторы процитированной выше статье на Anandtech. Хотя эксперимент мы проводили по-другому: для сборки программы из исходного кода мы пользовались стандартным компилятором gcc (и при этом не выставляли никаких дополнительных флагов), а не компилятором Intel.
По итогам результаты распределились следующим образом (ГБ/с, чем больше — тем лучше):
Как видим, процессор AMD лидирует со значительным опережением (об этом пишет и производитель в недавно опубликованных маркетинговых материалов — например, в статье AMD EPYC SoC Delivers Exceptional Results on the STREAM Benchmark on 2P Servers).
Впрочем, не будем торопиться с выводам: высокие результаты синтетических тестов свидетельствуют о реальной производительности очень косвенно. Посмотрим, как наши процессоры справляются с задачами, более или менее приближенными к реальной практике.
Сборка Boost
Для оценки производительности очень хорошо запустить на сервере сборку чего-нибудь сложного и ресурсоёмкого. Мы собираем набор библиотек C++ Boost: скачиваем архив с исходниками последней версии с официального сайта (на сегодняшний день это версия 1.65.1), распаковываем и запускаем сборку (всё строго по инструкции, без изменения настроек и выставления дополнительных флагов компилятора).
Результаты получаются следующие:
- на сервере с Intel Xeon Gold сборка выполняется за 9 минут 12 секунд;
- на сервере с AMD Epyc 7351 — за 10 минут 15 секунд;
- на сервере с Intel Xeon Silver — за 12 минут.
Результат, как видим, получился вполне предсказуемый: у AMD получилось лучше, чем у Silver, но при этом хуже, чем у Gold.
Бенчмарк NAMD
NAMD (Nanoscale Molecular Dynamics) — программа для молекулярной динамики, которая используется не только для научных расчётов, но и в качестве бенчмарка для оценки производительности вычислений с плавающей точкой. Бенчмарки NAMD хороши, во-первых, тем, что они основаны на вычислительных задачах, приближенных к реальным, а во-вторых — тем, что создают хорошую нагрузку на процессор.
Для тестов мы использовали скомпилированные бинарные файлы, размещённые на сайте Университета Иллинойса. Там же можно найти конфигурационные файлы для бенчмарков.
Были проведены два стандартных теста: STMV и APOA1. Так как у всех задействованных в тесте процессоров разное количество ядер, мы ограничили выполнение теста 40 потоками (по потоку на ядро).
Помимо трёх упомянутых выше серверов, в этом тесте был также задействован сервер c процессором Intel Xeon E5 2630v4.
Первый тест, который мы провели, называется STMV (сокращение от Satellite Tobacco Mosaic Virus — табачный мозаичный вирус-сателлит). Расписывать подробности вычислений мы не будем (заинтересованные читатели всё найдут по ссылке выше). Отметим только, что для моделирования динамики этого самого вируса программе нужно проделать сложные расчёты на основании достаточно увесистого набора данных. Обработка больших данных — это как раз один из типичных сценариев использования современных серверных процессоров, поэтому результат бенчмарка NAMD представляет интерес.
При оценке и анализе результатов мы обратим внимания в первую очередь на время выполнения теста. Полученные результаты представлены на следующей диаграмме:
В лидеры, как и следует ожидать, вырывается Intel Xeon Gold На втором — AMD EPYC (224.000992 с). Далее идут Intel Xeon Silver (250.966705) и Intel Xeon E5 2630v4 (262.287109 c).
Следующий тест — это APOA1 (Apoleprotein A1), стандартный бенчмарк NAMD. Здесь результаты распределились следующим образом:
- Intel Xeon Gold — 19.105089;
- AMD EPYC — 22.09503;
- Intel Xeon Silver — 25.303406;
- Intel Xeon E5 2630v4 — 23.258205.
Более наглядно результаты показаны на диаграмме:
AMD Epyc в очередной раз показал себя вполне предсказуемо, обойдя Intel Xeon Silver, но уступив Intel Xeon Gold.
Заключение
По результатам тестов мы можем заключить, что процессор AMD EPYC 7351 показывает в целом хорошую производительность и по результатам тестов занимает место между Intel Xeon Silver и Intel Xeon Gold. Компания AMD уже не в первый раз пытается занять собственную нишу на рынке. Насколько удачными будут эти попытки — покажет время.
Что можно сказать о новых процессорах Intel и AMD с точки зрения соотношения «цена — качество»?
Рекомендуемая цена для AMD EPYC 7351 — 1100 долларов (информация из статьи In the Epyc center: More Zen server CPU specs, prices sneak out of AMD), и это гораздо дешевле, чем большинство процессоров линейки Intel Xeon Gold (например, рекомендуемые цены). При этом указанная сумма вполне сопоставима со стоимостью «старших» моделей Xeon Silver (например, Xeon Silver 4116, для которого рекомендуемая цена составляет 1000 долларов).
На фоне Silver AMD EPYC выглядят вполне конкурентоспособно: результаты как наших, так и сторонних бенчмарков (например, Intel Xeon Silver 4116 Linux Benchmarks and Review of the Top-End Xeon Silver и Dissecting Intel's EPYC Benchmarks: Performance Through the Lens of Competitive Analysis), показывают, что по целому ряду тестов процессоры AMD лидируют.
Мы вполне согласны с авторами процитированный выше статьи на Anandtech, что для некоторых вариантов использования (например, в качестве веб-сервера или в качестве сервера приложений Java) серверы на базе AMD EPYC вполне можно рекомендовать.
Вместе с тем для более специализированных задач (например, для высокопроизводительных вычислений или виртуализации) процессоры Intel пока что более предпочтительны (см. размышления на эту тему в статье Dissecting Intel's EPYC Benchmarks: Performance Through the Lens of Competitive Analysis).
За ситуацией на рынке процессоров мы будем внимательно следить. Надеемся, что нам в ближайшее время удастся познакомиться и с другим процессорами AMD и провести тесты, приближенные к интересным и актуальным для нас вариантам использования. Если всё получится, мы обязательно расскажем об этом в следующих публикациях.
Выражаем благодарность компании ASUS за предоставленный сервер