Найти в Дзене

Intel Xeon vs AMD EPYC: архитектура, виртуализация

На самом деле, хотя в мире серверных решений есть далеко не только эти 2 техногиганта, основную долю занимают именно они. Различные ARM решения или иные архитектуры несут свои определенные цели и задачи, которые мы рассмотрим как-нибудь в следующих статьях. Дисклеймер: это разбор всех "плюсов" и "минусов" обоих производителей, старался быть объективным, но не везде это возможно, так как и личный опыт имеется. Однозначно "Берите EPYC" или "Берите XEON" я вам не скажу, этот выбор вы должны сделать сами из потребностей вашей инфраструктуры. Долгое время, примерно до 2018 года, серверы на AMD были, мягко скажем, не частым явлением. Если вы где-нибудь хотя бы слышали об Opteron или Athlon, то вам, вероятно, повезло, потому что лично я их видел только на торговых площадках где торгуют б/у вещами, зато вот Intel Xeon были везде, а сейчас их уже устаревшие чипы перепродают за бесценок. в 2003-2006 амд выкатила свои процессоры Opteron первых поколений. Несмотря на то что они были в некотором
Оглавление

На самом деле, хотя в мире серверных решений есть далеко не только эти 2 техногиганта, основную долю занимают именно они. Различные ARM решения или иные архитектуры несут свои определенные цели и задачи, которые мы рассмотрим как-нибудь в следующих статьях.

Дисклеймер: это разбор всех "плюсов" и "минусов" обоих производителей, старался быть объективным, но не везде это возможно, так как и личный опыт имеется. Однозначно "Берите EPYC" или "Берите XEON" я вам не скажу, этот выбор вы должны сделать сами из потребностей вашей инфраструктуры.

Архитектура и подходы к разработке процессоров

Долгое время, примерно до 2018 года, серверы на AMD были, мягко скажем, не частым явлением. Если вы где-нибудь хотя бы слышали об Opteron или Athlon, то вам, вероятно, повезло, потому что лично я их видел только на торговых площадках где торгуют б/у вещами, зато вот Intel Xeon были везде, а сейчас их уже устаревшие чипы перепродают за бесценок.

в 2003-2006 амд выкатила свои процессоры Opteron первых поколений. Несмотря на то что они были в некотором роде печками, свою популярность они нашли, но не смогли удержаться, причин этому была масса - Intel выкатила свои технологии виртуализации, которые позволяли делать несколько ВМ на одном сервере с хорошей эффективностью, а также душила конкурентов рекламой, эксклюзивными контрактами с крупнейшими производителями серверных платформ. В 2011 AMD отрыгнула "прорывную" архитектуру Bulldozer, у которой плохо было всё: низкий IPC, задержки с ОЗУ, потребление тоже было высоким в первой итерации. Ничего не напомнило? Да-да, десктопные FX были этой же архитектуры.

Хоть Opteron и были дешевле, но покупатели предпочитали покупать что-то более знакомое, понятное и надежное. Огромную роль сыграла агрессивная реклама "Синих" и их уже довольно мощная репутация. Последнее поколение Opteron "Seatle" 2016 года, линейка которого состояла всего из трех процессоров, рынок не принял вообще. Если предыдущие хоть кто-то, да покупал, то к ARM тогда никто не был готов абсолютно.

И вот в 2017 году выходят на тот момент достаточно неоднозначные EPYC. Думаю, вы со мной согласитесь, что первое поколение архитектуры Zen было довольно 50/50 и не нашло особого отклика, но появились надежды. Неужели "Синим" монополистам могут что-то противопоставить?

-2

Чиплетная архитектура AMD EPYC

Традиционно, большинство процессоров производились в виде единого кристалла. Это надежно, это классика, это знать надо (хотя про Core 2 Quad тактически промолчим). AMD, начиная с проклятого поколения "Bulldozer", решила пойти по своему пути. IOD отдельно, ядра группами по 2, 4 и 8 единиц - в отдельных кристаллах. Все это размещено на одной подложке. В первых поколениях "Красные" действительно перестарались, на 8 ядерный процессор могло приходиться аж 4 CCD блока (Core Complex Die). Проблемы все те же - нестабильное межъядерное взаимодействие, повышенные задержки при работе с ОЗУ, довольно слабый IPC. Из плюсов - реально низкая цена и многопоточность.

Во втором поколении EPYC уже показали 64 ядра на одном AMD EPYC 7002 при цене процессора в примерно 7 тысяч долларов, в то время как Intel могли предложить только Xeon Platinum 8280, где при стоимости в 10 тысяч долларов было всего 28 ядер и 56 потоков. Да, все еще IPC у AMD был проблемной зоной, как и технологии виртуализации, но это уже был разрыв шаблонов, а Intel пришлось срочно менять тактику.

EPYC второго поколения
EPYC второго поколения

Почему AMD выбрала многочиплетность, а Intel — монолит?

Как я упоминал выше, AMD вообще не стеснялись на одной подложке размещать по 2-4-8 кристаллов, в то время как Intel старалась все делать на 1, максимум на 2 кристаллах. А произвести большую кремниевую пластину с большим количеством ядер, где не будет брака - это не дорого. Просто из 10 произведенных штук хорошо если заработают 3. Отсюда и цена - по сути мы оплачиваем не столько реально работающие процессоры, сколько брак. Intel и по сей день придерживается своей консервативной тактики. Давайте разберем плюсы и минусы этих довольно важных различий.

Пример монокристалла (слева) и "чиплетного" процессора (справа)
Пример монокристалла (слева) и "чиплетного" процессора (справа)

AMD (чиплетная архитектура: CCD + IOD)

  • Многочиплетный дизайн: ядра (CCD) и контроллеры памяти/PCIe (IOD) разделены.
  • Масштабируемость проще: можно добавить больше CCD и увеличить количество ядер (до 96–128).
  • Производство дешевле: маленькие чиплеты проще выпускать, меньше брак.
  • Латентность внутри одного CCD низкая, между CCD — выше (NUMA-эффекты).
  • IOD даёт много каналов памяти (до 12) и до 128 PCIe-линий.
  • Энергоэффективность выше за счёт использования передовых техпроцессов TSMC.
  • Требует NUMA-aware настройки ОС и приложений.
  • Цена за поток ниже → выгодно для облаков, виртуализации и HPC.

Intel (монолит / крупные кристаллы)

  • Долгое время использовали монолитные кристаллы, позже — крупные «tile» (EMIB, Sapphire Rapids).
  • Масштабируемость ограничена физическим размером кристалла (обычно до 28–48 ядер).
  • Производство дороже: один большой кристалл сложнее выпускать, выше риск брака.
  • Латентность межъядерного обмена равномерная и предсказуемая.
  • Поддержка памяти и PCIe встроена в сам кристалл (меньше каналов памяти и линий).
  • Энергоэффективность ниже из-за больших монолитов и отставания по техпроцессу.
  • NUMA-особенности минимальны, проще для приложений и виртуализации.
  • Цена за поток выше, но обеспечивает стабильность и совместимость с корпоративным ПО.

Если в двух словах, задержки между кристаллами у AMD почти всегда будут куда выше и некоторое особенно чувствительное ПО надо настраивать и именно поэтому очень долгое время у AMD были проблемы с таймингами ОЗУ. Сейчас эти проблемы отработаны и минимизированы.

Хотя в серверном "железе" уже не монополисты, но мы еще не говорили про ПО.

Не стоит забывать, что больше 20 лет Intel подминала весь серверный рынок под себя и свои технологии. VMware, Hyper-V, Xen, KVM, Proxmox - все они традиционно оптимизированы именно под Intel и нельзя за пару лет сделать тот же прорыв. Чисто технически это нереально, нужны баснословные ресурсы, но AMD уверенным шагом идет в ту сторону, но на моей памяти - даже куда более многоядерный и вроде как производительный сервер на EPYC (мощнее сервера на Intel в 2.5 раза, к сожалению, не могу сказать технически подробности, но Intel Gold 3го поколения и EPYC примерно того же года), но в одной задаче, где нужно было работать с 80 ВМ одновременно он работал в 1.5 раза хуже, выдавая большие задержки ввода-вывода и вообще было ощущение, будто значительную часть производительности он тратил вовсе не на ВМ. Или может мы дураки были, или что это было - неизвестно, но субъективный опыт у меня именно такой.

А еще, раз уж мы говорим про ВМ. стоит упомянуть про уникальные технологии Intel - Cache Allocation Technology (CAT) и Code/Data Prioritization (CDP). Первая позволяет "нарезать" L3 кэш, чтобы условно 1 его часть доставалась 1 ВМ, вторая часть 2 ВМ, а между собой они никак не пересекались. Вторая же - надстройка над первым, которая позволяет делить кэш не только по объему, но и по инструкциям (Code) и данным, стекам (Data). Если приложение чувствительно к инструкционному кэшу (например, JIT-компилятор или базы данных), можно гарантировать, что оно не вытеснится массивами данных.

У AMD есть похожий, но немного другой инструмент - CCX/CCD pinning. Проще говоря можно "закрепить" ВМ за конкретным CCD или CCX (Core Complex, хотя начиная с Zen 3 CCX = CCD, а до него CCD делился на 2 CCX) и другие соседние ВМ не смогут вообще ничего взять из того что зарезервировано и не случится такой проблемы, что 2 потока от одного, скажем так, загрузчика, расходятся на разные блоки.

Сами проблему сделали, сами её устранили, молодцы вообще ребята, действительно стараются не ударить в грязь лицом.

ПО и виртуализация

Intel

  1. VT-x (Intel Virtualization Technology for x86)
    Аппаратная поддержка виртуализации инструкций.
    Позволяет гипервизору запускать гостевые ОС без полной эмуляции (Ring -1).
    Ключевая часть —
    Extended Page Tables (EPT) → аппаратное преобразование адресов, снижает нагрузку на гипервизор.
  2. VT-d (Intel Virtualization Technology for Directed I/O)
    Аппаратная виртуализация устройств через IOMMU.
    Позволяет напрямую передавать PCIe-устройства (passthrough), поддерживает SR-IOV.
    Важна для GPU, сетевых карт, NVMe.
  3. VT-c (Intel Virtualization Technology for Connectivity)
    Сетевые оптимизации.
    Ключевые механизмы:
    VMDq — разгрузка сетевого стека (аппаратная сортировка пакетов по VM).
    SR-IOV — разделение одной сетевой карты на множество виртуальных функций.
    Ускоряет сетевую виртуализацию (особенно в NFV, SDN).

AMD

  1. AMD-V (AMD Virtualization)
    Полный аналог VT-x.
    Есть аппаратная страничная трансляция:
    Rapid Virtualization Indexing (RVI) = аналог EPT.
    Функционал совпадает почти один в один.
  2. AMD-Vi (IOMMU)
    Аналог VT-d.
    Тоже обеспечивает PCI passthrough, SR-IOV.
    Работает на уровне контроллера памяти и PCIe.
  3. Сетевые технологии (частичный аналог VT-c)
    У AMD нет единого бренда вроде VT-c.
    SR-IOV поддерживается наравне с Intel.
    Но VMDq (аппаратная очередь для VM в сетевом адаптере) у AMD не прижилась.
    Вместо этого упор сделан на
    DPDK, vhost-net, virtio (программные стеки в гипервизорах).

В целом, чисто в теории для условного Proxmox нет особой разницы, VT-x или AMD-V. Он все захавает и даже не подавится. На практике, как обычно, дьявол кроется в деталях. Intel в плане виртуализации ведет себя несколько стабильнее и более пластична за счет VT-c, VMDq, SR-IOV - технологий сетевых оптимизаций. У AMD в противовес есть SEV - это про безопасность и шифрование. Аналога у Intel на момент написания статьи нет.

Итог?

История и архитектура серверных процессоров показывают, что универсального «лучшего» варианта просто нет. Тут всё зависит от того, что именно вам нужно: хотите много ядер за относительно скромные деньги и при этом защиту памяти — берите AMD EPYC, хотите предсказуемость, стабильность и всякие сетевые фишки вроде VT-c и VMDq — тогда Intel Xeon вас не подведёт. В конце концов, правильный выбор — это тот, который реально подходит вашей инфраструктуре и задачам, а не тот, который красив на бумаге или в рекламе.

На моем опыте AMD очень хорошо работают "вчистую" без виртуализации, в то время как Intel хоть и стоит довольно недешево, но стабильность и крепкие нервы предприятия, а значит и системного администратора, того стоят.

Intel
100,4 тыс интересуются