Жизнь за пределами Зиона

от автора

С некоторым удивлением обнаружил, что для большинства хабражителей само собой разумеется, что внутри сервера стоят самые обычные Xeon’ы. Все остальные процессоры — это что-то далёкое и почти несуществующее, поэтому статья как «Процессоры для корпораций» вызвала весьма живой интерес. Раз уж тема настолько интересная, попробуем заполнить информационный вакуум. Итак,

Кто и зачем их покупает?


В одном из таких бюллетеней компания Gartner чётко называет три причины для покупки чего-то, отличного от x86:

  • платформенно-зависимый код;
  • производительность;
  • надёжность.

Давайте по порядку.

Страна ELF’ов

С первой причиной всё просто: перекомпиляция кода — всегда риск, даже если платформы похожие, как, например, SPARC/Solaris и POWER/AIX. А уж если платформа не похожа ни на что, то «слезть» с неё практически невозможно.

Сейчас, с повсеместным распространением Java, в качестве серверов приложений всё шире применяется x86. Даже Oracle, имея в своём портфеле линейку SPARC, в первую очередь развивает Java-машину JRockit, работающую на x86, и только во вторую — HotSpot. Однако далеко не все приложения написаны в последние 3-5 лет, поэтому в банках сплошь и рядом встречаются приложения под HP-UX, Solaris и даже System i. Хотя, конечно, в этом сегменте серверов на x86 — подавляющее большинство.

Размер имеет значение

Естественно, возникает вопрос: а может, все эти необычные процессоры существенно производительнее Xeon’ов?

На свете существует масса тестов разной степени объективности. Вот, например, команда, которую можно выполнить на любой *nix-машине:

openssl speed md5

А вот её результаты:

При таком наборе параметров openssl просто рассчитывает хеши и засекает, сколько таких хешей удалось рассчитать за три секунды. Тестируется только скорость самого процессора — никакие шины, порты, периферийные устройства в тесте не участвуют.

На картинке далеко не вся выборка, имеющаяся у меня, но если внимательно присмотреться, можно увидеть много интересного:

  • Вполне себе серверный процессор UltraSPARC IV, вышедший в 2006 году, по вычислительной мощности лишь чуть-чуть превосходит ARM, который может стоять в любом сегодняшнем мобильном телефоне.
  • Вычислительная мощность промышленных RISC-процессоров 5-6 летней давности примерно одинакова; сегодня лидирует IBM POWER.
  • Xeon не только не отстаёт, но и превосходит традиционные RISC-процессоры.

Конечно, смысла в этом тесте не больше, чем в известном упражнении с линейкой. Мало того, новые процессоры SPARC (T4 и старше) рвут любой Xeon как Тузик грелку: в них ряд алгоритмов хеширования реализован аппаратно. Но всё же понятно — дело не в скорости расчётов. А в чём же?

Для корпораций имеет значение общая производительность сервера, которая достигается не только производительностью одного процессора, но и количеством этих процессоров.

Знаете ли вы, что PayPal начинал с больших серверов Sun? Сначала сервер был один, потом два, и только потом, когда PayPal понял, что давно перерос имеющиеся сервера и скоро перерастёт вообще любые, приложения были переписаны для работы на кластерах. Банков, переросших Самые Большие Сервера в мире не так много, всего с полсотни. Да что там банки, если сам Том Кайт говорит, что не существует базы данных, способной целиком занять современный сервер…

В общем, самые большие на сегодня сервера на процессоре Xeon у Sun, HP и IBM насчитывают 80 ядер (8 кристаллов по 10 ядер), а Dell ограничивается 40 ядрами.

В то же время Sun ещё в июле 2008 года выпустил сервер SPARC Enterprise M9000, содержащий до 256 ядер SPARC64 VII (примечание: сервер поступил в продажу в апреле 2007, но до июля 2008 в него можно было установить только 128 ядер SPARC64 VI). Конкуренты долго отставали, но в 2011 году IBM выпустил свой сервер POWER 795 с 256 ядрами POWER 7, а в 2013 году подтянулся и HP со своим Integrity Superdome.

У Sun были трудные времена, но они позади. Линейка SPARC развивается семимильными шагами. И пусть размер новых серверов Oracle пока далёк от рекорда (128 ядер в SPARC Enterprise T5-8 или до 192 ядер в SPARC Enterprise M5-32), всё равно рекорд принадлежит платформе SPARC/Solaris: Fujitsu M10-4S, до 1024 ядер SPARC M10.

Пытливый ум сразу же приведёт в пример SGI UV (до 2048 ядер Xeon) или Project Odyssey по вживлению x86 в Superdome. Однако что-то не видать пока серверов БД на таких машинах. А серверам приложений они зачем?..

RAS, два, три…

Наконец, третья причина покупки RISC-серверов — надёжность. Reliability, Availability, Serviceability. В отличие от Google, который знает, что сервер в любой момент может пропасть, а потому нет смысла покупать дорогой и надёжный сервер, традиционные реляционные СУБД считают, что сервер надёжен.

Разумеется, существуют всевозможные технологии кластеризации на самых разных уровнях. Однако если сервер упадёт, то, во-первых, восстановление сервиса на другом узле кластера займёт некоторое время (от нескольких минут до нескольких часов), а во-вторых, всегда есть риск, что восстановление будет неполным и/или некорректным. В общем, лучшая защита та, до срабатывания которой дело не дошло. Поэтому инженеры стараются как могут защитить сервера от разных неожиданностей. В таблице ниже — набор таких «неожиданностей» на примере серверов Sun:

Обратите внимание вот на что:

  • Чем больше (и дороже) сервер, тем выше степень его защиты. Поэтому даже если нужны относительно небольшие сервера, то с точки зрения надёжности лучше купить большие и нарезать их на домены.
  • Уровень защищённости x86-серверов (первая колонка) примерно соответствует RISC-серверам средней ценовой категории (midrange). У серверов HP эти показатели лучше, но до Superdome всё равно не дотягивают

Много ли их покупают?

Рынок серверов обладает достаточно выраженной сезонностью (график по данным бюллетеня IDC Worldwide Quarterly Server Tracker):

Разумеется, данные весьма приблизительны. Более того, когда берёшь бюллетень за первый квартал этого года, где показатели сравниваются с первым кварталом прошлого года, цифры по прошлому году отличаются от прошлогоднего бюллетеня. Если нормировать график, то получается примерно вот так:

То есть HP и IBM, контролируя примерно по 30% рынка, периодически отбирают друг у друга пальму первенства, примерно по 15% рынка у Dell и Oracle(Sun)+Fujitsu, и 10% — у всех остальных.

Из чего же состоят эти астрономические суммы? А вот из чего (график за 2009 год по материалам бюллетеня Gartner «Market Trends: Transformation of Non-x86 Servers»):

Если считать сервера в штуках, то доля x86 составит примерно 98%. Доля в денежном выражении неуклонно растёт, преодолев в 2005 году рубеж 50%.

Примерно треть выручки приходится на RISC-сервера, а из «прочих» значительная часть — это мэйнфреймы IBM System z и Fujitsu BS2000 (80% и 12% соответственно), а остальное — какая-то экзотика.

А что на рынке?

Давайте теперь разберёмся с линейками серверов.

IBM

Самый большой набор линеек — у Голубого Гиганта.

Во-первых, это мэйнфреймы, ведущие свою родословную от знаменитой System/360 (с которой была скопирована Единая Серия). Затем были System/370, System/390, zSeries и, наконец, System z, где «z» означает «zero downtime». Это совершенно свой мир с собственными процессорами частотой до 5 ГГц, своими шинами и многократным дублированием всего. Область применения — core banking (т. е. ключевые банковские системы) и процессинг пластиковых карт.

Во-вторых, «системы для малого бизнеса» — именно так позиционировалась при создании AS/400. Сейчас АБС на этой платформе работают в нескольких российских банках из top 30. В разное время платформа называлась AS/400, iSeries (да-да, у девочек — iPhone, а у настоящих пацанов — iSeries) и, наконец, System i. Основа платформы — виртуальная машина, содержащая в себе реляционную СУБД, средства разработки пользовательского интерфейса и всё на свете. Как JVM, только лучше. В результате приложения, написанные несколько десятилетий назад, работают на современных серверах без перекомпиляции.

В-третьих, платформа AIX, ведущая свою родословную, как и все коммерческие юниксы, от Unix System V. Сервера в разное время назывались RS/6000, pSeries, System p и POWER systems.

С точки зрения  железа  POWER Systems и System i абсолютно идентичны: это RISC-сервера на основе процессора POWER.

И, наконец, линейка серверов на базе процессоров x86: PC Server, Netfinity, eServer xSeries, System x.

HP

Основу благосостояния компании составляет линейка серверов ProLiant на базе процессоров x86, купленная у Compaq.

Линейка Integrity представляет собой сервера сначала на процессорах PA-RISC, а потом — Intel Itanium.

Широко известна в узких кругах платформа NonStop, по «железу» идентичная Integrity Blade. Однако о ней разговор в следующих сериях.

Sun, Oracle и немного Fujitsu

У Oracle две линейки серверов: SPARC Enterprise на базе RISC-процессоров SPARC и Sun x86 Servers (бывшая SunFire X) на базе x86. Линейка SPARC, в свою очередь, состоит из T-серии (бывшая SunFire T) на базе «младших» процессоров SPARC T, M-серии (бывшие SunFire E и SunFire V) на базе «старших» процессоров SPARC M и SPARC-серверов Fujitsu, купить которые можно только у Oracle.

Dell

Dell выпускает единственную линейку серверов PowerEdge на базе процессоров x86.

Слова, слова…

Теперь пришло время разобраться, что же такое RISC, NUMA, CMT…

RISC vs CISC

Как известно, RISC обозначает «Reduced Instruction Set Computer». Обычно на русский язык это переводится как «компьютер с ограниченным набором инструкций», но это не совсем верно. Скорее, «компьютер с набором ограниченных инструкций».

Давайте сравним одну и ту же команду ADD в процессорах Intel 80486 (типичный CISC, Complex Instruction Set Computer) и SPARC V7:

Intel 80486 SPARC v7
Типы операндов al(ax,eax),imm8(16,32)
r/m8(16,32),imm8(16,32)
r/m16(32),imm8
r/m8(16,32),r8(16,32)
r8(16,32),r/m8(16,32)
r, r, r
r, r, d12
Длина команды 2 – 9 4
Количество тактов 1 – 3 1

У 80486 множество вариантов адресации параметров команды, при этом сама команда имеет переменную длину и разную продолжительность выполнения.

Жизнь показала преимущество RISC над CISC: проще предсказывать переходы, короче внутренний конвейер, следовательно, меньше накладные расходы при переключении задач. Почему же семейство x86 показывает неплохую производительность? А потому, что начиная с процессора Pentium Pro, выпущенного в 1995, сложная система команд x86 перед выполнением аппаратно транслируется в набор простых команд RISC-ядра.

Itanium во всех статистических выкладках включается в RISC, но на самом деле это VLIW (Very Long Instruction Word), а точнее, EPIC (Explicit Parallel Instruction Computer). Вот уж воистину, как вы яхту назовёте…

Суть этой архитектуры в том, в процессоре есть несколько вычислителей, и командное слово содержит инструкции для всех вычислителей сразу. Например, если у нас есть вот такая программа

R2 = R3 + R4 R1 = R5 + R6 R7 = R2 + R1

то для неё будет сгенирирован вот такой микрокод:

R2 = R3 + R4;       R1 = R5 + R6 R7 = R1 + R2;       nop

Параллелизация выполняется не процессором, а компилятором. Как следствие, написание кодогенератора становится сложной задачей.

По сравнению с VLIW, EPIC содержит ряд усовершенствований: предвыборка команд, спекулятивное исполнение, маркер зависимости следующей операции от текущей… Но суть та же.

SMP vs NUMA

SMP — это Symmetric Multiprocessor, т. е. архитектура, при которой каждый процессор имеет доступ к каждой ячейке общей памяти. NUMA — Non-unified Memory Access, т. е. у процессора более быстрый доступ к своей памяти и менее быстрый — к чужой:


Слева — SMP, справа — NUMA

Понятно, что чудес не бывает, и скорость обмена с памятью, находящейся на той же плате, что и процессор, выше, чем с памятью на другой плате. Т. е. с точки зрения физики любая достаточно большая машина, в которой больше одной процессорной платы, это NUMA. На практике разница сводится к тому, что в SMP-системах (AIX, Solaris) оптимизацию размещения страниц в физической памяти берёт на себя операционная система, а в NUMA (HP-UX) этой оптимизацией может заниматься приложение через специальный API. На практике прикладная оптимизация в данном случае себя не оправдывает.

Есть и ещё один термин из этой области — CMT, Chip Multithreading. Это относится к T-линейке процессоров SPARC. По сути это тот же SMP, но пропускная способность шины существенно ограничена. Предполагается, что каждое ядро обращается к своей области памяти, что характерно для серверов приложений, но нехарактерно для СУБД. Поэтому до T3 Sun официально не рекомендовал запускать СУБД на серверах T-серии, на T4 Oracle уже неплохо работал, а вот линейка T5   это уже полноценные SMP-сервера.

И собственно о RISC-серверах

Вот мы и добрались до самого интересного — промышленных RISC-серверов (график за 2009 год по материалам бюллетеня Gartner «Market Trends: Transformation of Non-x86 Servers»):

Если говорить о Unix-серверах, то имеется однозначное соответствие «производитель — название платформы — процессор — ОС»:

Компания IBM HP Oracle
Линейка POWER systems Integrity SPARC Enterprise
Процессор POWER Intel Itanium SPARC
ОС AIX HP-UX Solaris
Архитектура SMP/RISC NUMA/EPIC SMP/RISC

Ну, а теперь немного истории…

Откуда есть пошёл RISC

В 1980 году в университете Berkley открылся проект RISC, завершившийся в 1982 появлением процессора RISC I. Сам процессор в промышленную серию не пошёл, но зато породил множество последователей.

HP

Одним из первых последователей стал MIPS. На этих процессорах были собраны знаменитые графические станции Silicon Graphics, рисовавшие суровую российскую действительность 90-х в романе Пелевина «Generation П». На них же были построены сервера Tandem NonStop — горизонтально масштабируемая сверхнадёжная платформа БД и приложений. Впоследствии Tandem был куплен Compaq’ом, и его пытались переделать на Alpha, но безуспешно. Когда Compaq был куплен HP, NonStop перевели на Itanium. Сегодня MIPS встречается только в промышленных компьютерах.

Компания ARM ассоциируется у нас скорее с портативными устройствами — телефонами, планшетами и прочими айфонами. Тем не менее, в HP идёт проект Moonshot по созданию серверов с низким энергопотреблением. Прототипы сделаны на процессорах ARM, но в продажу, скорее всего, пойдёт версия на Intel Atom.

Серверы DEC Alpha все администраторы со стажем вспоминают с теплотой. В 90-е годы никому бы и в голову не пришло сравнивать эти высокопроизводительные 64-битные RISC-процессоры с x86. Кстати, одна из первых поисковых систем, Altavista, была создана компанией Digital с целью продемонстрировать миру мощь процессоров Alpha.

Как это случается со многими хорошими технологиями, Альфе не повезло: в 1999 году компания Digital была куплена Compaq’ом, а в 2001 году Compaq принял решение перейти на «индустриальный стандарт» — Itanium.

Сама HP до покупки Compaq тоже создала свой RISC-процессор — PA-RISC. На базе этого процессора выпускались сервера HP Integrity, которые местами служат до сих пор, несмотря на то, что поставка PA-RISC прекращена 31 декабря 2008 года. Даже в виде ЗИП.

В 2001 году была объявлена совместная инициатива HP и Intel по созданию «единого промышленного стандарта серверов». Архитектура называлась IA64 (в противовес IA32, которая есть не что иное как x86), торговая марка — Itanium. Правда, злые языки тут же переименовали её в Itanic. Intel делал одну ошибку за другой: во-первых, выбор архитектуры EPIC вряд ли можно считать удачным решением. Во-вторых, в процессоре была заявлена поддержка инструкций x86: компании покупали новые сервера в расчёте на то, что пока на них будет работать старое ПО, рассчитанное на x86, пока не напишут новое. Но старое работало плохо, совсем не на те деньги, которые были заплачены за новое оборудование, а новое писать никто не спешил.

Выпуск серверов на новой платформе начали IBM, Dell и HP. Однако постоянные срывы Intel’ом сроков разработки новых чипов привели к тому, что IBM вернулся на POWER, а Dell сосредоточился на x86. HP же перевёл на Itanium все платформы, оказавшиеся у него в результате разработок и череды приобретений: HP-UX, OpenVMS и NonStop.

Сейчас, особенно после громкого заявления Oracle, Itanium потихоньку загибается. И после того, как HP похоронил столько интересных платформ, это кажется справедливым…

SPARC

SPARC (Scalable Parallel ARChitecture) — открытый стандарт, разработанный компанией Sun. Стандарт SPARC зарегистрирован в IEEE под номером 1754—1994, а его развитием занимается организация SPARC International, Inc. основана в 1989 году. Выпускать процессоры SPARC может каждый, для этого достаточно купить лицензию стоимостью 99 долларов. В разные годы выпуском процессоров SPARC занимались Texas Instruments, Ross Technology и даже советская компания МЦСТ (Московский центр спарк-технологий). Но основные производители процессоров и серверов — это, конечно, Sun Microsystems и Fujitsu.

На рисунке зелёным обозначены процессоры, соответствующие седьмой версии спецификации (SPARC V7), оранжевым — SPARC V8, красным — SPARC V9. Жёлтая заливка означает многоядерный чип.

Итак, линейка UltraSPARC развивалась до 2004 года. После этого Sun начал работать над совершенно новым процессором UltraSPARC V под кодовым названием Rock. Дело дошло до изготовления прототипа и испытаний, но вдруг работа была прекращена.

Параллельно в 2005 году появился новый процессор Niagara. Он предназначался для серверов приложений. Его отличали

  • низкая тактовая частота (приложению не нужна большая вычислительная мощность);
  • большое (16) количество ядер на кристалле;
  • упрощённая шина, которая хорошо работала только в том случае, когда каждое ядро обращалось к своей области памяти.

Время показало, что до вычислительные ресурсы приложениям всё-таки нужны, поэтому эту нишу прочно занял Xeon, вытесняя оттуда T-серию.

Собственно, все SPARC-сервера, выпускавшиеся до недавнего времени (M3000, M5000, M8000, M9000) — это Fujitsu. Как же, спросите вы, Sun их контролировал? А очень просто: сервер без операционной системы никому не нужен, а права на Solaris — у Sun. Вот такое взаимовыгодное сотрудничество.

Буквально пару лет назад аналитики предсказывали скорую смерть SPARC, особенно после аварии на Фукусиме. Казалось, Oracle похоронил это направление, считая, что RAC на x86 заменит большие сервера. Однако этого не произошло, и пришлось развивать то, что было, т. е. T-серию.

Успехи, надо сказать, просто поражают. Сегодня у Oracle есть ядро под кодовым названием S3, на базе которого построены все современные процессоры SPARC. T5 отличается от T4 повышенной тактовой частотой (3.6 ГГц против 3.0 ГГц), количеством ядер на кристалле (16 против 8) и количеством внешних связей. В результате самый большой сервер на процессоре T4 состоит из 4 кристаллов (T4-4, 4×8=32 ядра), а на T5 — из 8 кристаллов (T5-8, 8×16=128 ядер). M5 это тот же T5 с большим количеством внешних межпроцессорных связей и кэша, но с меньшим количеством ядер. Максимальный сервер — M5-32 (32×6=192 ядра).

Процессоры Oracle SPARC обладают массой интересных свойств: в зависимости от нагрузки автоматически регулируется количество потоков, выполняемых одним ядром (от 1 до 8), а при снижении количества задействованных ядер повышается тактовая частота работающих. Аппаратно реализован ряд алгоритмов хеширования и шифрования.

Fujitsu после долгого перерыва также выпустила новый процессор — M10. Это развитие линейки SPARC64: увеличена тактовая частота, переработан блок вычислений с плавающей точкой… Кроме того, изменена архитектура серверов. Теперь они могут собираться из блоков, подобно IBM POWER 770. В результате в одном сервере может быть до 1024 ядер (2048 потоков).

Сегодня Oracle — единственная компания «большой тройки», имеющая внятный roadmap развития своих RISC-процессоров. На официальном сайте можно взять простую картинку для презентации. На лекциях и семинарах Oracle говорит о новом ядре, которое находится в стадии тестирования. Кроме того, провозглашена программа software in silicon, т. е. аппаратная поддержка, например, типов данных и алгоритмов компрессии Oracle Database.

POWER

В 1985 году исследовательский центр Томаса Ватсона (того самого, в честь которого названа суперЭВМ Watson) начал проект «Америка» по разработке процессора RISC второго поколения. В 1986 году отделение IBM в городе Остин приступило к работе над серией RS/6000; в 1990 году выпущены первые компьютеры с процессором архитектуры POWER — RS/6000 (RISC System/6000).

На картинке оранжевым цветом обозначены 32-битные процессоры, красным — 64-битные. Жёлтая заливка обозначает многоядерный чип.

В этом же году был образован альянс AIM (Apple, IBM, Motorola) по разработке процессора PowerPC. Процессор пережил несколько инкарнаций, а в 2005 году Freescale Semiconductor (то, что осталось от Моторолы) основал power.org — альянс по развитию архитектуры PowerPC. Присоединиться к нему может любой желающий.

Существует и процессор PowerPC64, который используется в основном в игровых консолях — Sony PlayStation, Nintendo Wii, Microsoft Xbox 360…

Что же касается основной ветки, то сегодня POWER 7 — это самый производительный из RISC-процессоров. Каждое ядро способно обрабатывать от 1 до 4 потоков в зависимости от режима (SMT1, SMT2, SMT4), который, в отличие от SPARC, выбирается статически. Кроме того, есть возможность, поддерживаемая машиной POWER 780, включить «турбо-режим» — увеличение тактовой частоты половины ядер за счёт отключения второй половины.

Самый большой сервер — POWER 795, 256 ядер, до 1024 потоков.

POWER 8 будет, но когда и с чем — неизвестно…

Вместо заключения

Если статья наберёт достаточно плюсов, то следующая серия будет посвящена кластерным реляционным СУБД, коих на рынке целых 7 штук. В следующей серии:

  • Как Большие Компании обходят CAP-теорему?
  • Почему Oracle RAC на маленьких узлах не смог заменить большие сервера?
  • Куда податься, если вся инфраструктура развёрнута на платформе Microsoft?
  • На чём работают процессинговые центры самых крупных банков?
  • Что будет, если объесться зелёных слив?
  • И многое другое…

ссылка на оригинал статьи http://habrahabr.ru/post/190862/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *