На самом деле, хотя в мире серверных решений есть далеко не только эти 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 и не нашло особого отклика, но появились надежды. Неужели "Синим" монополистам могут что-то противопоставить?
Чиплетная архитектура 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 пришлось срочно менять тактику.
Почему 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
- VT-x (Intel Virtualization Technology for x86)
Аппаратная поддержка виртуализации инструкций.
Позволяет гипервизору запускать гостевые ОС без полной эмуляции (Ring -1).
Ключевая часть — Extended Page Tables (EPT) → аппаратное преобразование адресов, снижает нагрузку на гипервизор. - VT-d (Intel Virtualization Technology for Directed I/O)
Аппаратная виртуализация устройств через IOMMU.
Позволяет напрямую передавать PCIe-устройства (passthrough), поддерживает SR-IOV.
Важна для GPU, сетевых карт, NVMe. - VT-c (Intel Virtualization Technology for Connectivity)
Сетевые оптимизации.
Ключевые механизмы:
VMDq — разгрузка сетевого стека (аппаратная сортировка пакетов по VM).
SR-IOV — разделение одной сетевой карты на множество виртуальных функций.
Ускоряет сетевую виртуализацию (особенно в NFV, SDN).
AMD
- AMD-V (AMD Virtualization)
Полный аналог VT-x.
Есть аппаратная страничная трансляция: Rapid Virtualization Indexing (RVI) = аналог EPT.
Функционал совпадает почти один в один. - AMD-Vi (IOMMU)
Аналог VT-d.
Тоже обеспечивает PCI passthrough, SR-IOV.
Работает на уровне контроллера памяти и PCIe. - Сетевые технологии (частичный аналог 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 хоть и стоит довольно недешево, но стабильность и крепкие нервы предприятия, а значит и системного администратора, того стоят.