Threadripper против EPYC: сравнение трёх 32-ядерных процессоров AMD в серверных приложениях
После недавнего решения VMware изменить политику лицензирования своего гипервизора ESXi, приняв ограничение в 32 физических ядра на 1 процессорный сокет, рубеж в 32 ядра стал той линией фронта, где безраздельно властвует AMD, и если сегодня вы выбираете 32-ядерную платформу для виртуализации, контейнеров или приложений, то вам одновременно доступны 3 серверных архитектуры от AMD.
- Прежде всего, это старый-добрый EPYC первого поколения с кодовым именем "Неаполь", который сегодня можно купить с большой скидкой.
- Второе поколение EPYC с кодовым именем "Рим", недавно пополнившееся моделями с увеличенным до 256 МБ кэшем третьего уровня.
- Игровой "монстр", Ryzen Threadripper, второго поколения, которому в этой статье отведено особое место.
Как это часто бывает, у AMD большой выбор 32-ядерников для разных задач. Мы взяли EPYC 7551p, EPYC 7532 и Threadripper 2990WX, чтобы протестировать и сравнить их в популярных серверных приложениях:
- 1С Предприятие 8.3
- MySQL
- REDIS
- NGINX
- TensorFlow
- ElasticSearch 7.6.0
Мы выясним, в каких случаях имеет смысл выбирать старый-добрый первый EPYC, в каких - новейший EPYC Rome с увеличенным кэшем, а в каких - бросить всё и поставить в сервер мечту любого геймера, Threadripper 2990WX.
Почему особое место мы отводим Threadripper-у?
Потому что недавно Hetzner представил свои выделенные серверы на базе процессоров Ryzen Threadripper. Я не думаю, что это первое использование игровых CPU в Cloud-хостинге, но на моей памяти это первый раз, когда компания с мировым именем с гордостью предлагает вам частичку HEDT-сервера в аренду. И я бы прошёл мимо, если бы речь шла о каком-то локальном мелком хостере, но извините меня Hetzner входит в десятку крупнейших Cloud-провайдеров мира, он имеет отличную репутацию среди сисадминов России и Украины, даже несмотря на отсутствие русскоязычной поддержки.
И хотя эту компанию много раз ловили на использовании десктопных комплектующих, Hetzner - это крупный процветающий бизнес, и если они делают такой шаг, значит и нам надо брать с них пример и разобраться, есть ли возможность здесь сэкономить, и зачем вообще покупать Threadripper вместо EPYС, ведь эти процессоры хоть и имеют почти одинаковый сокет, но требуют разных материнских плат.
Серверная платформа для Threadripper?
В мире есть только одна исключительно серверная материнская плата под ThreadRipper первых двух поколений, выпускаемая компанией ASRock Rack. Этот производитель любит эксперименты, и делает например, Mini ITX плату под LGA3647, или серверные платы на Socket AM4. Именно на платах ASRock Rack работают серверы Hetzner с процессорами Ryzen. К сожалению, сделка ASRock Rack и Hetzner находится под NDA, но складывая те крупицы информации, которые удалось собрать, я предполагаю, что использовалась именно эта материнская плата с минимальными изменениями, характерными для крупного заказчика.
ASRock Rack X399D8A-2T - это ATX платформа с двумя 10-гигабитными портами на самом современном контроллере для 10GBase-T, Intel X550-T2. Эта материнская плата имеет IPMI мониторинг на базе чипа ASpeed AST2500 с выделенным 1-гигабитным сетевым портом, 8 слотов DIMM с поддержкой ECC, два слота M.2 под NVME/SATA, 8x SATA и 5 слотов PCI-E 3.0 формата x16 со скоростями (3 x16 + 2 x8). Во многом материнка повторяет рассмотренную нами ASRockRack EPYCD8-2T для EPYC 7000, но это и понятно: здесь одинаковое расположение слотов памяти, PCI и выводов на задней панельке.
В вопросах охлаждения тоже как-то не густо: самый низкий кулер под Threadripper, который можно встретить в свободной продаже - это Supermicro SNK-P0063AP4 или Dynatron A26 высотой 2U, чуть покачественнее и повыше - Noctua NH-U9 TR4-SP3 под 4U. Учитывая, что Threadripper 2990WX имеет TDP равное 250 Вт, имеет смысл искать платформу с жидкостным охлаждением, и это не пустые слова: для того, чтобы Threadripper 2990WX в нашем тестовом стенде не перегревался и выходил на свои максимальные частоты, мне пришлось не просто использовать жидкостную систему охлаждения с 360-мм радиатором, но и разместить тестовый стенд в помещении с температурой воздуха +10 градусов Цельсия.
С оперативной памятью ситуация следующая: процессоры Ryzen Threadripper поддерживают только небуферизованную память. Они имеют 4-канальный контроллер DDR4, и в серверной материнской плате ASRock Rack X399D8A-2T её частота ограничена 2666 МГц. Буферизованные модули RAM данными процессорами не поддерживаются, а потому большие объёмы ОЗУ в серверах с Threadripper вам недоступны. В списке совместимых модулей DIMM находятся модели объёмом 8 и 16 ГБ, а суммарно на материнскую плату можно поставить до 256 ГБ ОЗУ. Это очень мало для виртуализации, но достаточно для контейнеров или отдельных приложений, требующих высокую процессорную мощность. Как подтверждение того, можем посмотреть на серверы, которые использует CloudFlare, имеющие 256 ГБ ОЗУ.
Во всём остальном возьмите Threadripper, напишите на его крышке фломастером «ЙА EPYC!» и работайте с ним как с «эпиком», а в различиях мы сейчас разберёмся.
Разница между SoC и традиционным CPU
Закрыв глаза и взяв в левую руку Threadripper X2990, а в правую - EPYC, и вы не почувствуете разницы: у этих процессоров почти одинаковый сокет, размеры и вес, с той лишь разницей, что EPYC - это полноценный SoC, не требующий установки южного моста на материнскую плату, а Threadripper - это CPU, которому всё же нужен чипсет. Южный мост отвечает за шину PCI Express, разведённую к некоторым слотам, за SATA порты и обвязку. Давайте сравним топологию типичной материнской платы под EPYC с платой под Threadripper:
На плате ASRock Rack X399D8A-2T чипсет стоит тот же, что и на геймерских материнках: AMD X399, который продвинутые игроманы уже списали в утиль, а в серверах он, как говорится, ещё послужит. С точки зрения функционала обвязки, сравнивая с той же платой EPYC8D-2T, здесь нет никаких недостатков: 2 SATA порта с поддержкой DOM для загрузки гипервизора, плюс ещё 8 SATA портов, из которых 4 выведены разъёмом Mini-SAS для подключения к корзине или бэкплейну, 2 порта M-Key, из которых один может работать как OCULink и даже USB порт под флешку с VMware ESXi распаян на материнке так, чтоб не мешать видеокартам. Да, здесь один из M.2 слотов в режиме SATA будет использовать линию из южного моста, но давайте будем объективны: нет смысла занимать этот слот SATA накопителем - туда просится NVME формата 2280, а в этом случае накопитель обменивается данными с процессором. Кстати, вы можете объединить два M.2 накопителя в RAID 0/1 из BIOS материнки.
Естественно, у ASRockRack X399D8A-2T меньше PCI Express 16x слотов, чем у материнских плат под EPYC, где все слоты имеют ширину шины 16x (PCI Express 3.0 для первого поколения EPYC и PCI Express 4.0 для второго). С практической точки зрения это означает, что платформа на процессорах Threadripper явно не предназначена для 3 и более GPU типа Nvidia Tesla V100, использующих PCI-E 3.0 16x, но в то же время вы можете использовать и сетевые карты и HBA, которые требуют ширину шины PCI Express 8x.
Слоты памяти установлены вдоль воздушного потока для оптимальной продувки в стоечном корпусе. При нехватке сетевых портов коммутатора в стойке, вы можете подключаться к IPMI-интерфейсу чипа ASpeed AST2500 через любой из 10-гигабитных портов в Out-of-band режиме. В общем, данная материнская плата имеет всё то же, к чему вы привыкли в традиционном сервере, а плюс ещё 1 порт USB Type-C, которого не бывает на материнских на платах под EPYC, и к которому можно подключить аж целую дисковую полку типа QNAP TR-004U. Также на плате имеется звуковой кодек Realtek ALC892, который сгодится для передачи аудио на RDP-сервере, но не более того.
ThreadRipper и EPYC: различия в контроллерах памяти
У всех трёх рассматриваемых процессоров большие различия в работе с оперативной памятью. У процессоров ThreadRipper второго поколения используется 4-канальный контроллер, у EPYC первого поколения - 8 канальный. И там и там физически контроллер памяти находится на каждом из 4 кристаллов ССХ (Core Complex) с ядрами и кэшпамятью. Получается, что каждые 8 ядер в EPYC первого поколения используют имеют прямой доступ не более чем к двум каналам памяти, и задача гипервизора - правильно адресовать выделенный под виртуальную машину объём памяти, чтобы виртуальные процессоры и виртуальная память обслуживались одним кристаллом процессора.
У процессоров Threadripper 2990WX всё гораздо хуже: два кристалла вообще не имеют собственных контроллеров памяти и обращаются к ней через соседние, что приводит к появлению задержек. Более того, по диаграмме видно, что если вы планируете задействовать все 32 ядра процессора, то в EPYC первого поколения вам лучше установить все 8 модулей памяти, а в Threadripper 2990WX хватит и четырёх. Естественно, что чем масштабнее ваше приложение осуществляет обмен данными с ОЗУ, тем заметнее будет разница между настольным и серверным процессорами AMD, но на практике это нужно далеко не всем.
Кардинальное изменение в новых процессорах EPYC Rome состоит в том, что межпроцессорный коммутатор, шину PCI Express, контроллеры памяти и всю остальную обвязку производитель вынес с кристаллов с ядрами в отдельный центральный чип, так называемый блок ввода/вывода. Таким образом, у вас каждое процессорное ядро получило доступ ко всем 8 каналам памяти, что не только упростило работу гипервизору, но и повысило производительность. Теоретически, одного этого шага должно быть достаточно, чтобы EPYC Rome выигрывал во всех тестах у процессоров с архитектурой Zen 1 и тем же числом ядер, но не будем торопиться (спойлер - многое зависит от архитектуры тестируемого приложения и объема данных).
То, чего нет у EPYC!
Очень интересно, что в материнской плате ASRockRack X399D8A-2T используется традиционный сине-серый текстовый BIOS, который (ой, я не могу сдержать эмоции), поддерживает разгон процессора и памяти, а ещё может похвастаться профилями для сохранения настроек оверклокинга. Имеющийся Watchdog таймер перезагрузит ваш сервер, если тот зависнет во время работы от переразгона. Конечно, кто-то скажет, что разгон в сервере - это несерьёзно, но не спешите тушить свечи: в мире есть целый пласт серверов, в которых частота CPU имеет определяющее значение при выборе. Их задача - отработать 8 часов в день, а потом они, как правило, перегружаются или отдыхают. Это - серверы для HFT (High-Frequency Trading), задача которых зарабатывать деньги на бирже методом высокочастотной торговли, то есть выставлением заявок в промежуток времени, пока сервер биржи запрашивает повторный сетевой пакет от клиента, подавшего ордер на покупку/продажу. Такие машины, как правило, устанавливаются в тех же дата-центрах, что и серверы биржи, и их задача с точки зрения оборудования - добиться минимальной задержки в выставлении заявок на покупку/продажу. В таких серверах активно применяется разгон, жидкостное охлаждение, процессоры с частотами 5 ГГц и выше и даже платы FPGA.
Кроме этого, у нас есть целый ряд некритичных задач, таких как рендеринг или расчёт моделей для нейронных сетей, где в случае сбоя можно продолжить задачу с того же шага. Да и вообще не будем забывать, что у геймеров процессоры годами работают в разогнанном режиме, без зависаний, а некоторые вообще не представляют себе компьютер без разгона. Для всех этих случаев материнская плата ASRockRack X399D8A-2T готова, ну а если не хочешь - не разгоняй!
Про EPYC же следует сказать, что если у вас процессор нового, второго поколения, то он отличается от первого возможностью настройки NUMA-конфигураций памяти с привязкой к отдельным группам ядер или всему сокету сразу. Так же вам могут быть доступны настройки задержек памяти, но это зависит от воли производителя материнской платы, и встречается крайне редко.
То, чего нет у Threadripper
Мы помним, что EPYC - самый безопасный процессор, так повелось ещё с первого поколения на ядре Naples, который имеет опции шифрования памяти, а в EPYC Rome добавили шифрование регистров (!), значительно усилив изоляцию виртуальных машин. Вообще, указанные "фишки" представляют собой практически мини-революцию с одним единственным, но весомым недостатком: самые «вкусные» функции типа AMD SEV работают только под гипервизором Linux KVM. В VMWare их поддержка ожидается начиная с 7 версии, а в Windows Server с его Hyper-V вообще неизвестно когда ждать.
Из приземлённых вещей, таких как поддержки SSE/AVX все три поколения процессоров совершенно одинаковы.
|
EPYC 7551 |
TR 2990WX |
EPYC 7532 |
Год выпуска | 2017 | 2018 | 2020 |
Ядер |
32 | ||
Потоков |
64 | ||
Кэш L3, МБ |
64 |
64 |
256 |
AMD SEV |
Да |
Нет |
Да |
Каналов памяти |
8 |
4 |
8 |
Тип памяти |
ECC RDIMM |
UDIMM, ECC UDIMM |
ECC RDIMM |
Максимальная частота памяти, МГц | 2666 | 2666 | 3200 |
Частота, ГГц |
2.0-3.0 |
3.0 - 4.2 |
2.4 - 3.3 |
TDP, Вт |
180 |
250 |
200 |
Тем не менее, если у вас - солидная компания с серьёзным подходом к безопасности, то лучше выбрать новый EPYC, как минимум из-за наличия этих дополнительных функций шифрования памяти и регистров.
Поддержка со стороны VMware
Процессоры ThreadRipper официально и вовсе не поддерживаются гипервизором ESXi, и вряд ли когда будут, ведь vMware даже не сертифицировала серверный EPYC 3000. Это не значит, что VSphere не запустится на ThreadRipper 2990x - ещё как пойдёт. Я протестировал его работу, и даже миграция виртуалок без остановки между хостами ESXi на EPYC и Threadripper работала без проблем. Платформой ASRock X399D8A-2T поддерживаются функции SR-IOV и PCI-E Passthrough, и вы можете например отдать SATA-контроллер гостевой операционной системе для виртуальной СХД.
Всё прекрасно, придраться не к чему, внутри гостевых систем с настройками по умолчанию работает TurboBoost, но само осознание, что уверенности с несертифицированной конфигурацией тебе никто не гарантирует, плотно врезается в подсознание.
Частоты
У первого EPYC-а с частотами ситуация печальная: при его разработке 180 Вт считалось чем-то слишком большим для серверного рынка, а из-за инженерных особенностей, все ядра первого EPYC не могли разгоняться одновременно в принципе. Максимальная частота в 2998 МГц здесь появляется только при загрузке 4 ядер, а уже при загрузке 8 ядер, она останется достижимой только для 2 из них, а остальные будут работать на 2543 МГц или ниже, если выбран режим активного энергосбережения. При 16 активных потоках максимальная частота турбо-буста будет доступна только на 1 ядре, а при 32-х загруженных ядрах все они выстроятся в ряд на 2543 МГц и никакого ускорения не будет. Увеличения теплового пакета для этих поцессоров в BIOS-е нашей материнской платы нет, и установка СЖО не поможет: дело не в температуре, а в самом процессоре. Это сейчас можно в 1U корпус ставить 250-Ваттный процессор, отдавая треть полезного объёма под систему охлаждения, а три года назад это было крайне немодно и даже вульгарно.
Прелесть Threadripper 2990x в его частотах и абсолютной безграничности в потреблении питания из розетки: базовое значение частот составляет 3000 МГц с увеличением до 4200 МГц в турбо-режиме. Его делали для компьютеров стоимостью как 3-летняя иномарка, а уж там покупатель HEDT сам выберет себе либо топовую 360-мм систему жидкостного охлаждения с RGB подсветкой, или массивный воздушный кулер Noctua, или соберёт кастомизированную водянку, добавив к ценнику ещё тысячу $. Как вы отведёте тепло - это не просто ваша забота, это часть вашего хобби, ваш образ жизни и ваши интересы, которыми вы обмениваетесь на форумах, а компания AMD лишь даёт вам пожиратель любого программного кода, чтобы вы могли им правильно пользоваться, даже если в BIOS вам придётся отключать половину ядер для выхода на максимальную частоту. Вы спросите, зачем это делать? Дело в том, что топовой частоты 4174 МГц удаётся достичь при загрузке только 2 ядер, уже при 8-ми их частота составит 3800 МГц. Загруженные по максимуму 16 ядер работают на частоте 3600-3700 МГц каждое, а 32 ядра вместе выдерживают частоту 3394 МГц. Некоторые энтузиасты обнаружили, что отключение половины ядер в Threadripper 2990x помогает ему стабильно удерживать максимальные частоты и показывать лучшую производительность в играх.
Максимальное число ядер, работающих одновременно на максимальной частоте | ||
EPYC 7551p |
Threadripper 2990WX |
EPYC 7532 |
4 |
2 |
32 |
Частота каждого ядра при загрузке в 32 потока, МГц | ||
2543 |
3394 |
3296 |
Анонсированный недавно EPYC 7532 - это попытка получить максимум производительности на 32 ядра. Фактически, это вариант 64-ядерного EPYC 76x2 с заблокированными 32 ядрами, чей кэш третьего уровня был распределён между оставшимися в строю ядрами и составил 256 Мб на процессор (8 МБ на ядро). Расплачиваться за увеличение приходится раздувшимся энергопотреблением: до 200 Вт. Хочу сразу обратить внимание, что у AMD есть процессор EPYC 7542, так же имеющий 32 ядер и похожие частоты: 2.35-3.35 ГГц, но разительно меньший TDP - всего 155 Вт. Такой разброс по энергопотреблению объясняется аппаратной конфигурацией: 4 чиплета по 8 ядер в EPYC 7542 и 8 чиплетов по 4 ядра в EPYC 7532. Расплачиваться за увеличение приходится раздувшимся энергопотреблением: до 200 Вт. Хочу сразу обратить внимание, что ступенькой выше стоит более высокочастный 7542 с базовой частотой в 2.9ГГц, потребляющий 225 Ватт. Ниже у AMD есть процессор EPYC 7542, так же имеющий 32 ядрар и похожие частоты: 2.35-3.35 ГГц, но разительно меньший TDP - всего 155 Вт. Такой разброс по энергопотреблению объясняется аппаратной конфигурацией: 4 чиплета по 8 ядер в EPYC 7542 и 8 чиплетов по 4 ядра в EPYC 7532. Интересно, что в линейках EPYC никаких ограничений по числу потоков, использованию AVX/AVX2 инструкций нет: частоты всех 32 ядер независимо друг от друга прыгают от 1496 до 3296 МГц, и это - лучший план работы Turbo Boost, который можно было бы желать. Вообще, это справедливо и для всей серии современных EPYC Rome 7xx2 - вся схема турбо-частот в этих процессорах переработана, и вся новая линейка умеет держать частоты выше 3000 МГц для всех ядер.
Тестирование 1С Предприятие 8.3
Если рассуждать с точки зрения среднего бизнеса, то важнейшее преимущество 32-ядерных процессоров состоит в том, что старый кластер из 2-х или 4-х серверов вы сегодня можете заменить на 1 машину, совмещающую в себе и сервер приложения и сервер баз данных, а виртуализация даст дополнительную гибкость и удобство построения отказоустойчивого кластера. Если смотреть с точки зрения Cloud-провайдеров, то 32-ядерный CPU можно "нарезать" на 32 виртуальные машины для малого бизнеса, с жёсткой привязкой ядер и сдавать в аренду тем пользователям, кто ведёт свой учёт в облаке. Два разных подхода требуют двух разных тестов, и начнём мы как раз со второго.
Мелкие потребители 1С Предприятия используют самый простой, но в то же время быстрый способ хранения данных: в файлах. Как правило, их нагрузка является 1-поточной, и пользователю важно, чтобы программная платформа быстро обработала его запрос на выставление счёта или формирование отчётности. Для тестирования подобных конфигураций применяется известный тест Гилева, который в своей сути является 1-поточным, но показывает максимальную скорость при использовании 2 процессорных ядер на систему. И если вы сдаёте в аренду VPS под 1С Предприятие, то "Тест Гилёва" - это первое, что запустит ваш будущий клиент, чтобы оценить скорость сервиса.
Об авторе методики тестирования: Вячеслав Гилев, руководитель лаборатории тюнинга 1С, компании ООО "ЦТП", сайт gilev.ru Компания занимается адуитом и решением проблем, связанных с производительностью платформы "1С Предприятие". Создатели распространённого теста для оценки производительности компьютера в 1С, известного как "тест Гилева" |
И хотя Вячеслав Гилёв многократно высказывался о том, что виртуализация - лучший способ замедлить работу 1С, в наших тестовых условиях, когда на сервере используется 1 виртуалка для снятия показаний скорости, различий в скорости с "чистым железом" нет, и более того, под VMware у нас оно работает даже быстрее. Есть мнение, что 1С Предприятие сильно нагружает дисковую подсистему, и для устранения бутылочного горлышка использовал Ramdisk от компании SoftPerfect и сравнил его с самым простым 30-долларовым NVME SSD от компании DEXP на контроллере Phison E12. Разницы по скорости не было, а это лишний раз подтверждает, что для современного сервера приложений скорости типичного NVME накопителя достаточно, чтобы удерживать параметр IOWait на уровне, когда он не влияет на производительность. Другими словами, покупать дорогой RAID-контроллер ради роста производительности приложения уже нет смысла: проще использовать NVME накопители, а освободившийся бюджет направить на более производительный процессор.
На скриншоте выше вы видите типичный вывод результатов "теста Гилева": очки, набранные вашей системой (столбик слева) сравниваются со значениями, которые по мнению Вячеслава Гилева характеризуют работу сервера, как плохую, удовлетворительную, хорошую или просто замечательную. Тест оценивает не только аппаратную, но и программную составляющую сервера, поэтому для чистоты эксперимента мы использовали все значения программного обеспечения, установленные по умолчанию. Если ваша система набирает в тесте Гилева более 40 очков - вы можете собой гордиться, а мы гордимся тем, что превзошли его максимальную оценку "замечательно".
Гипервизор |
VMware ESXi 6.7U3 |
Клиентская платформа |
VM, 8 vCPU, 8 Gb Windows Server 2016 1C Предприятие 8.3.13.1690 |
Серверная платформа |
VM, 32 vCPU, 8 Gb Windows Server 2016 1C Предприятие 8.3.13.1690 сервер Microsoft SQL Server Developer |
С настройками по умолчанию в тесте Гилёва на процессорах EPYC 7532 вы получаете оценку "замечательно", и имейте в виду, что тюнинг программной платформы и базы данных может дать вам ещё больше.
Второй тест так же является 1-поточным, но в качестве хранилища данных используется Microsoft SQL Server и сервер 1С Предприятия, установленные на отдельной виртуальной машине на том же хосте. До начала тестирования я убедился, что наибольшие показатели получаются, если выделить каждой виртуальной машине по 32 vCPU. В этом тесте лидирует новый EPYC 7532, и забегая вперёд, скажу что и в других базах данных он раскрыл себя с лучшей стороны.
Многопоточность 1С мы будем измерять с помощью теста Fragster.ru, на 2-уровневой конфигурации "Сервер 1С + сервер SQL". Разработчики поясняют, что мерилом является производительность каждого потока в очках, и значение в 400-500 - это тот нижний порог, при котором работа всё ещё терпима. Учитывая, что речь идёт об одновременных потоках, которые обрабатывает сервер, число пользователей, которые могут быть обслужены данной конфигурацией, может быть и в 4-5 раз больше, в зависимости от структуры работы вашей компании.
Результат говорит сам за себя: для сервера 1С Предприятие лучшим выбором будет EPYC, а не Threadripper, причём вы можете существенно сэкономить, выбрав процессоры первого поколения.
NGINX Plus
Функционал NGINX не ограничивается Front-End сервером для веб-приложений. Использование его в качестве обратного прокси для тех же баз данных уже создаёт ощутимую нагрузку на хост и требует высокого параллелизма. Именно по этой причине (из-за возможности сильно распараллеливать нагрузку на все ядра) мы используем не бесплатный NGINX, а коммерческий NGINX Plus. Чтобы загрузить один из самых быстрых и самых лёгких программных продуктов, тестовый стенд должен в разы превышать по производительности тестируемую конфигурацию, что в условиях нашей редакции сделать невозможно. В своём блоге команда NGINX опубликовала результаты собственных тестов с настройками по умолчанию, и повторяя их методику, я даже и близко не смог приблизиться к их значениям. Обсудив с коллегами ситуацию, я решил, что наша тестовая конфигурация достаточна для того, чтобы сравнить процессоры между собой, поэтому мы будем использовать относительные результаты, приняв за 100% показания EPYC 7551p.
Гипервизор |
VMware ESXi 6.7U3 |
Клиентская платформа |
VM, 32 vCPU, 12 Gb Ubuntu Linux 18.04 LTS |
Серверная платформа |
VM, 16 vCPU, 16 Gb Ubuntu Linux 18.04 LTS Nginx Plus R20 (1.17.6) |
wrk -t 256 -c 1000 -d 120s http://server-ip/0kb.bin
С точки зрения минимальной задержки EPYC 7532 показывает почти двукратное преимущество перед процессорами предыдущего поколения, и это очень важно, если вам нужно высокое время отклика приложения. И опять же, возвращаясь к крупным корпоративным клиентам AMD, хочу заметить, что для себя CloudFlare выбрала рекордно быстрый EPYC Rome, а не Threadripper. Я не люблю говорить о том оборудовании, которое не прошло через наше тестирование, но если низкая задержка связана с архитектурой Zen2, то высокочастотные 8-ядерные EPYC 7252/7232P/7262 могли бы быть лучшим бюджетным решением для WAF / Proxy / UTM приложений именно из-за этого показателя.
Redis
В предыдущих тестах я обнаружил, что самые быстрые версии Redis и MariaDB поставляются в репозиториях Oracle Linux, поэтому мы будем использовать эту ОС для баз данных.
Гипервизор |
VMware ESXi 6.7U3 |
Тестовая виртуалка |
VM, 32 vCPU, 16 Gb Oracle Linux Server 7.6 Redis server 3.2.12 MariaDB 5.5.64 |
На протяжении многих лет нереляционные базы данных оптимизировались именно под скорость исполнения простейших запросов, и не удивительно, что частота процессора здесь играет решающую роль. В однопоточном режиме мы видим то же, что и в тесте NGINX: минимальная задержка приводит второй EPYC к победе.
По предыдущим тестам становится ясно, что для простых приложений, работающих в 1-2-несколько потоков лучшим решением оказывается EPYC Rome, и очень хочется верить, что ситуация сохраняется и с меньшим числом ядер. С ростом нагрузки на тех же самых приложениях картина становится неоднозначной. Однако, перейдём к более сложным сервисам.
MariaDB 10.3
Используя форк MySQL, MariaDB 10.3, входящую в состав дистрибутивов CentOS / Debian, традиционно, мы создаём InnoDB базу на 1 миллион строк, из которой используем только 100 000, чтобы нагрузить процессор запросами SELECT из пула, хранящегося в ОЗУ. У нас очень быстрый NVME накопитель, который сглаживает задержки записи логов, поэтому производительность системы хранения не влияет на показатели.
Мы видим ситуацию, характерную для предыдущих приложений: огромное преимущество EPYC Rome 7532 по латентности в 1 потоке, которое тает по мере увеличения загрузки, уступая Threadripper 2990WX.
ElasticSearch 7.6.0
Если мы говорим, что 32 ядра нужны для обработки Big Data, то Elastiс - лучший тому пример. Написанный на Java, - этот стек для работы со статистическими данными и логами приложений, является одним из самых востребованных инструментов среди DevOps и Data Science специалистов.
Гипервизор |
VMware ESXi 6.7U3 |
Тестовая виртуалка |
VM, 64 vCPU, 30 Gb Ubuntu Linux 18.04 LTS JAVA Runtime 11 ElasticSearch 7.6.0 |
Из встроенных тестов пакета Rally я выбрал http_logs, поскольку этот тест достаточно большой: 32 Гб данных в развёрнутом виде, и примерно столько же занимают результаты тестирования. За основу измерений мы берём две метрики, первая из которых - добавление документов в индекс.
При тестировании в реальных приложениях какие-то результаты, выбивающиеся из общего тренда, просто не поддаются логическому объяснению. Отчасти это вина разработчиков, которые ставят своей целью написать приложение, а не точный бенчмарк. Отчасти, на погрешность влияют накапливающиеся задержки в программном стеке, и если смотреть на задержки, приняв результаты этого же процессора за единицу, то разброс становится просто колоссальным.
Компания AMD постоянно подчёркивает, что новая архитектура процессоров epyc rome даёт до 40% больше скорости в Java приложениях по сравнению с первым поколением epyc, и в тесте range мне есть чем их порадовать: преимущество почти 10-кратное, но явного победителя в битве между новым серверным и старым игровым процессором нет.
Tensorflow / keras
Я использую задачу для построения модели генерации текста на основе существующих новостных публикаций. Используя проект textgenrnn, я подаю на вход 16-мегабайтный текстовый файл, и запускаю построение модели, подбирая параметр batch size с таким расчётом, чтобы минимальное его значение максимально загружало cpu. Да, я знаю, что на GPU такие расчёты выполняются быстрее, дешевле и практичнее, но построение нейронных сетей - это не всегда только GPU. Там, где важна точность расчётов или расчёт одновременно нескольких моделей по-прежнему используются центральные процессоры.
Мы с вами помним, что при загрузке всех 32 ядер, Threadripper 2990wx и Epyc 7532 имеют почти одинаковые частоты, и все остальные оптимизации архитектуры zen2 в долгих математических расчётах не задействуются.
Цена вопроса
На момент подготовки обзора, материнская плата ASRock X399D8A-2T стоила примерно столько же, сколько и ASRockRack EPYCD8-2T, в районе 550$, а это значит, что на платформе для процессоров AMD Threadripper не сэкономишь. Намного интереснее ситуация с самими процессорами:
- EPYC 7551p - 1300$
- Threadripper 2990wx - 1525$
- EPYC 7532 - 3250$
Вообще, на момент подготовки обзора, у AMD в продаже было 9 (!) Вариантов 32-ядерных процессоров первого и второго поколения: для односокетных серверов, для двухсокетных серверов, на ядре первого поколения, на ядре второго поколения со 128 мб кэша L3, на ядре второго поколения с 256 мб кэша L3, - настоящий рай для любителей повыбирать в ценовом диапазоне от 1300$ за EPYC 7551p и до 3400$ за EPYC 7542, ну а самый доступный epyc rome серии 7452 обойдётся всего в 2025$.
Не забываем, что epyc поддерживают память типа Registered, а Threadripper - нет.
- 16 ГБ ECC Registered DDR4 2666 MHz - 80$
- 16 ГБ ECC Unbuffered DDR4 2666MHz - 110$
- 16 ГБ Non-ECC Unbuffered DDR4 2666 MHz - 70$
Простейшая конфигурация из процессора, материнской платы и 256 ГБ ОЗУ получится следующей:
- EPYC 7551p + AsrockRack EPYCD8-2T + 256GB ECC RDIMM DDR4 = 2490$
- Threadripper 2990wx + ASRockRack X399D8A-2T + 256gb ECC DIMM DDR4 = 2955$
- Threadripper 2990wx + ASRockRack X399D8A-2T + 256gb Non-ECC DIMM DDR4 = 2660$
- Epyc 7532 + ASrockRack EPYCD8-2T + 256GB ECC RDIMM DDR4 = 4440$
Так же не забывайте, что под epyc 7532 имеет cмысл покупать самую быструю память ddr4 3200, что ещё больше прибавит к стоимости машины.
Выводы
Разные по своей природе приложения показывают совершенно разные результаты, и не всегда комбинация "быстрее/дороже" оказывается лучше. Мы выяснили, что:
- для протестированных простых малопоточных приложений лучшим выбором является epyc rome 7532, и для аренды vps под 1c - это лучшее решение. Скорее всего, тенденция сохранится и на других программных продуктах с тем же характером нагрузки.
- - ровно то же самое можно сказать про работу1с Предприятие в связке с сервером MySQL в средней компании на сотню пользователей
- - в то же время, в многопоточной связке 1C-MSSQL первый Epyc 7531p показывает ту же скорость, что и EPYC Rome 7532, так что здесь можно круто сэкономить
Для баз данных с большим числом подключений Threadripper 2990wx с его высокими частотами подходит лучше, и в приложениях, связанных с big data и machine learning он работает быстре. Новые Epyc-и с увеличенным до 256 мб кэшем третьего уровня устанавливаются в те же материнские платы, что и первые epyc с ядром "неаполь", и всё что вам нужно - это прошить новейший bios. Если у вас уже работает сервер на первом epyc, и вы хотите поменять процессор на epyc rome, то сначала убедитесь, что BIOS с поддержкой ZEN-2 может быть залит именно на вашу материнскую плату, т.к. Первые материнки имели 16-мегабайтный чип ROM, а под новые процессоры нужен 32-мегабайтный. Приобретая платформу под Threadripper для сервера, вы можете взять материнку, которая сделана на той же производственной линии, что и самые серверные в мире платы, у вас будет ecc память и NVME RAID. Для подобных инсталляций, Asrock Rack X399D8A-2T - единственная, а потому самая лучшая покупка.
Ну а что касается психологических барьеров и предрассудков, то я был бы рад вам перечислить, как много вы теряете, выбирая игровой cpu вместо серверного, да кроме официальной поддержки от vmware ничего не могу вспомнить. Предвосхищая вопросы типа "а как же новое поколение threadripper"... Скажу просто: пока что для них нет серверных материнских плат. Как только появятся - обязательно протестируем.
Михаил Дегтярёв (aka LIKE OFF)
16/03.2020