Железные 5 ГГц: история о том, как собрать супербыстрый VDS
Если бы наш старый добрый тариф «Форсаж» был человеком, то сейчас он бы нервно курил в сторонке и вспоминал лучшие годы. А ведь как хорошо всё начиналось. Тогда, в 2018 году, мы первыми подключили NVMe и модифицировали тариф с гибким масштабированием ресурсов, который жил с нами с 2016 года. Тогда он был самым быстрым из всех наших тарифов. Но времена меняются и несмотря на то, что Gold 5115 по-прежнему считается довольно шустрым процессором, уже появились решения и порезвее.
В общем, моя история о том, как Форсажу пришлось нехотя сойти с верхней ступени пьедестала и занять третье место по скорости после двух новых тарифов — «Битрикс.Турбо» и «CPU.Турбо», которые мы запустили в течение этого года.
Могу пообещать, что будет много подробностей про железо, тестов процессоров и (ну надо же) виртуальных машин и немного внутренней кухни. Итак, приступим.
Это гонка на выживание — сейчас будет весело!
В феврале 2019 года мы запустили новый тариф Битрикс.Турбо: серверы с процессорами Intel Core i9-9900K с тактовой частотой в 5 ГГц в режиме Turbo Boost. Мы гоняли тесты на производительность — тогда-то я и написал свою первую статью, а ребята из соседнего отдела пилили рецепт, чтобы выжать из Битрикса максимум. i9 оправдали наши ожидания, запуск состоялся. Всем спасибо, расходимся…
На самом деле Битрикс.Турбо оказался очень востребованным у наших клиентов. До сих пор только и успеваем серверы в кластер добавлять. Поэтому мы сделали выводы и решили не останавливаться на достигнутом, а продолжить свои изыскания в области высокочастотных процессоров.
Поскольку Битрикс.Турбо задумывался (и получился!) весьма специализированным тарифом, а Форсаж клиенты больше ценили за гибкость, было решено дополнить линейку именно скоростным тарифом для всех, кому надо «ещё круче, ещё быстрее».
Так как i9-9900K преподнесли нам пару «сюрпризов», мы сразу решили, что запускаться будем на других процессорах. Да, так все и было, уже на этапе проектирования аппаратного решения для Битрикс. Турбо мы получили «увлекательный и богатый опыт». Раз такое дело, немного отклонюсь в сторону от основного повествования и буквально в двух словах расскажу про этот экспириенс.
Стандартный сервер для тарифа Битрикс.Турбо собирается на одноюнитовой платформе: материнская плата на чипсете Intel Q370, процессор Intel i9-9900K, объём оперативной памяти 64 Гб, два NVMe-накопителя по 2 Тб в RAID1.
Внедрение такого решения было крайне весёлым и интересным. Дело в том, что по утверждению компании Intel, TDP данного процессора 95 Вт. И действительно, если использовать материнские платы, например, c чипсетом H310, процессор при пиковой нагрузке не выходит за указанные пределы: спокойно разгоняет одно ядро до 5 ГГц и остальные в пределах от 4,7 до 4,8 ГГц. Но если платформа использует чипсет классом выше, например, Q370 и улучшенное питание процессора, то процессор разгоняет до 5 ГГц уже большее количество ядер: от 2 до 5, а TDP увеличивается почти до 200 Вт.
Охладить такую «печку» в одноюнитовом исполнении — задача из бронхов (да уж, не из лёгких). Процессор начинал троттлиться и опускал частоту на всех ядрах до 4,4–4,5 ГГц. Контролировать такую ситуацию было крайне сложно. Честно говоря, я впервые столкнулся с настолько сильным несоответствием спецификации и реального воплощения у столь крупного и серьёзного производителя, как Синие.
Ввиду того, что на тот момент это был единственный доступный процессор со столь высокими штатными частотами, нам пришлось хорошо поработать перед тем, как позволить себе использовать его для нового тарифа, и прибегнуть к достаточно нетривиальным решениям: задействовать специальные корпуса с мощным воздушным охлаждением и организовать не менее крутое охлаждение стоек. Всё это вкупе позволяет сделать так, чтобы больше ядер работали в максимуме на частоте 5 ГГц без перегрева и троттлинга, но увеличивает энергопотребление и шум, дикий шум.
К сожалению, на тот момент времени внедрить жидкостное охлаждение мы не могли: с одной стороны, не было подходящего решения в нужном количестве для запуска, с другой, была масса вопросов к надёжности существующих, — утопить серверы крайне не хотелось.
Теперь вернёмся к основному повествованию.
Танцы на граблях
Как известно, производители процессоров тестируют свои решения на десктопном рынке и, в случае положительного результата, реализуют их в серверном сегменте. Нам оставалось только ждать появления серверного аналога Intel i9-9900K. И почти год спустя такой аналог появился — им стал Intel Xeon E-2288G. Компания Intel учла недостатки предшественника: процессор стал жёстко ограничен в теплопакете (95 Вт). Как и в любом серверном процессоре от Intel, появилась память с поддержкой ECC, а максимальный поддерживаемый объём вырос до 128 Гб.
С процессором разобрались, пришло время разобраться с серверной платформой. Поиск подходящей стал для нас серьезной проблемой, так как мы искали ту, которая устроила бы нас по тактико-техническим характеристикам, имела адекватную стоимость и поддерживала все возможности столь быстрого камня.
Поскольку процессор новый, выбор платформ оказался весьма и весьма ограниченным. После тщательного и дотошного изучения мы остановились на трех вариантах: первая отвалилась при первых тестах, — производитель выпустил сырой релиз прошивки платформы с поддержкой E-2288G, с которой всё решение работало крайне нестабильно, а ждать нового релиза и стабилизации платформы можно было только к концу года. Вторая не позволяла организовать полноценное охлаждение цепей питания, что очень важно для этого процессора. Новый процессор оказался им не по зубам. А вот третья подошла по всем параметрам. Не только оправдала, но даже превзошла наши ожидания. Модели раскрывать не могу — коммерческая тайна.
Также мы решили отказаться от экстремального воздушного охлаждения в пользу жидкостного (далее «водяное»), на которое постепенно планируем перевести и серверы для проекта Битрикс.Турбо. Прогресс не стоит на месте, и это прекрасно.
В результате переход на водяное охлаждение позволил поднять производительность как Intel i9-9900K, так и Intel Xeon E-2288G, не переходя температурный порог в 65 градусов в максимально длительной нагрузке во все потоки. Потратив уйму времени на отработку всех возможностей, а также всех возможных и даже невозможных внештатных ситуаций (я сильно скептически относился к «воде»), прогнав длительные тесты на максимальных нагрузках, даже я был вынужден согласиться, что это решение заслуживает того, чтобы жить долго и счастливо. Поэтому знакомьтесь — новый тариф CPU.Турбо.
Тактико-технические характеристики «железа» и софта для нового тарифа
Железо. Одноюнитовая однопроцессорная платформа, процессор Intel Xeon E-2288G с системой водяного охлаждения, 64 Гб ECC ОЗУ, дисковая подсистема на двух NVMe-накопителях Intel M.2 в RAID1.
Софт. Так как мы используем панели ISPsystem VMmanager 5, то выбор ОС у нас не особо богатый, поэтому ОС Linux CentOS 7 с ядром Oracle Unbreakable Enterprise Kernel Release 5 (UEK5) 4.14, qemu 2.12, libvirt 4.5.
Тестирование
В этот раз тестирование проводилось в два захода.
Сначала мы сравнили процессоры: i9-9900K на «воздухе», i9-9900K на «воде» и E-2288G на «воде». Проводить полный комплект тестов на последнем с воздушным охлаждением не стали из-за бессмысленности затеи — сразу было понятно, что и как будет. Также не стал я загонять в тест и процессор Intel Gold 5115, который используется на тарифе «Форсаж». Эти серверы идут в двухпроцессорной конфигурации и в многопоточных тестах теряется чистота сравнения.
Затем мы запустили тестирование пяти виртуальных машин: одна на тарифе Форсаж и четыре на CPU.Турбо. Тестирование производилось с эмуляцией процессора хоста, на пустом родительском сервере (без соседей) в вариациях тарифов «2 ядра/4 гига» (это самая популярная из сопоставимых конфигурация на «Форсаже»).
Тактико-технические характеристики платформ
Тариф Битрикс. Турбо
- Intel i9-9900K
- Материнская плата: Asus PRIME Q370M-C
- Оперативная память: 16 Гб DDR4-2666MT/s Kingston 4 штуки
- SSD-накопитель: 2 Тб Intel NVMe M.2 2 штуки в RAID1
Тариф CPU.Турбо
- Intel Xeon E-2288G
- Оперативная память: 16 Гб DDR4-2666MT/s Kingston 4 штуки
- SSD-накопитель: 2 Тб Intel NVMe M.2 2 штуки в RAID1
- Geekbench
- Sysbench
- Phoronix Test Suite
Подробное описание этого комплекса есть в моей прошлой статье. Однажды соберусь с духом, добавлю подробностей и опубликуем отдельно.
Результаты тестирования процессоров
По результатам теста Geekbench в однопоточном режиме Xeon E-2288G немного отстаёт от i9-9900K — разница составляет всего 0,8%. В многопоточном режиме отстает уже i9-9900k — на 7,63%.
Результаты других тестов
Во всех тестах, за исключением GeekBench, i9-9900K на «воде» лучше себя самого на «воздухе». E-2288G лучше своего «прародителя» по всем тестам, за исключением однопоточного теста GeekBench и теста Apache. Полагаю, что на результаты в этих тестах повлияли внутренние оптимизации процессора, которые и позволили упаковать его в стабильный теплопакет. В прочих однопоточных тестах производительность на одном уровне с погрешностью — выше 5 ГГц не прыгнем:-)
Едем дальше.
Тестирование виртуальных серверов
Сравнивать будем аж пять виртуальных машин.
Прежде всего, как и всегда, виртуальная машина под управлением ОС CentOS Linux 7 со стоковым ядром 3.10. Так же, ввиду того, что на хост-сервере используется кастомное ядро Unbreakable Enterprise Kernel Release 5 (UEK5) от Oracle, которое позволяет поднять производительность на новых процессорах, посмотрим, как изменится производительность виртуальной машины с CentOS 7 и ядром UEK5 (4.14) внутри на тарифе CPU.Турбо. Коли уж я взял в тест CentOS 7 с двумя разными ядрами, почему бы не посмотреть на прохождение тестов виртуальными машинами на других операционных системах семейства Linux и других версиях ядра? Возьмём последние версии Ubuntu LTS и Debian: Ubuntu 18.04 (ядро 4.15) и Debian 10 (ядро 4.19).
Итак, у стартовой черты:
- Форсаж CentOS 7 (3.10),
- CPU.Турбо CentOS 7 (3.10),
- CPU.Турбо CentOS 7 (uek5 4.14),
- CPU.Турбо Ubuntu 18.04 (4.15),
- CPU.Турбо Debian 10 (4.19).
Таким образом, мы сравним и два тарифа, и две CentOS 7 с разными ядрами, и 3 версии популярных ОС. Давно хотел замутить такую штуку, не знал, в какую статью засунуть:-)
Тесты — те же, ну очень я их люблю.
Результаты тестирования виртуальных серверов
По результатам теста Geekbench в однопоточном режиме первое место у ВМ CPU.Турбо с ядром UEK5. При этом разница между Форсажем и CPU.Турбо (3.10) уже составляет 65,02%, а с ядром UEK5 — и все 67,01%. Разница между CPU.Турбо на Centos 7 и на Debian — 0,2% в пользу UEK5.
В многопоточном режиме первенство у CPU.Турбо Debian. Он опережает CPU.Турбо (3.10) на 2,19%, а CPU.Турбо (UEK) на 1,13%. При этом CPU.Турбо (3.10) опережает Форсаж на 55,48%. Разница между CPU.Турбо (UEK) и Форсажем достигает 57,13%.
В однопоточном и многопоточном тесте Geekbench, а также тестах Sysbench, C-ray, OpenSSL примерно на одном уровне идут CentOS 7 с обоими ядрами и Debian 10. На предпоследнем месте Ubuntu 18.04.
В тесте на сжатие: Compress-7zip и Compress-bzip — первое место у Debian 10, второе место делят CentOS 7 с обоими ядрами, третье место у Ubuntu 18.04.
В тесте encode-mp3 места распределились следующим образом: Debian 10, Ubuntu 18.04, CentOS 7 UEK5, CentOS 7 с ядром 3.10.
В однопоточном тесте Himeno первое и второе место у CentOS 7 3.10 и CentOS 7 UEK5, третье — Debian 10, четвёртое с большим отставание у Ubuntu 18.04.
В тесте ffmpeg первое место у CentOS 7 UEK5, второе у Debian 10, третье место разделили CentOS 7 3.10 и Ubuntu 18.04.
В тесте John The Ripper первое место у Debian 10, второе — с одинаковым результатом обе CentOS 7, третье — Ubuntu 18.04.
В тесте Apache с большим отрывом лидирует CentOS7 UEK5, далее Debian 10, CentOS 7 3.10, Ubuntu 18.04.
В тесте GCC разница между ВМ на тарифе CPU.Турбо незначительна.
Во всех тестах последнее месте у ВМ на тарифе Форсаж — ощущается разница в частотах.
Интересно прошёл тест виртуальных машин. Отставание ВМ на тарифе «Форсаж» было очевидно. Так же были очевидны результаты у ВМ с CentOS 7 с разными ядрами: они должны были быть близки или с небольшим с перевесом в сторону более свежего ядра. Неожиданным стал только тест Apache. Но полным откровением стали результаты Debian 10 и Ubuntu 18.04 — лидирование в большинстве тестов Debian 10 и отставание так же в большинстве тестов Ubuntu 18.04.
Сказать, что именно влияет на такой разброс результатов, мне сложно. Возможно, более свежее ядро и софт. Или набор сервисов, запущенных «из коробки»: тесты проводились на свежеразвёрнутых ВМ без каких-либо настроек. Если Debian 10 после старта запускает очень небольшое количество сервисов, которые можно пересчитать на пальцах двух рук опытного фрезеровщика, то Ubuntu 18.04 не стал упаковывать себя в такие узкие рамки:-)
В целом, для тех, кто решит на собственном опыте убедиться в том, что новый тариф CPU.Турбо по праву зовется скоростным, рекомендую учесть два момента. Во-первых, операционка — на Debian будет быстрее без шаманства, с CentOS 7 тоже отлично, а если поколдовать с ядром, так вообще супер. Кому интересна установка UEK5 на CentOS 7 — го в комментарии. А во-вторых, следует помнить, что тестировали мы все-таки на пустых нодах. И значит, под нагрузкой результаты будут несколько иными, но все равно высокими. Всем добра.
До 3 октября серверы на тарифе CPU.Турбо можно заказать со скидкой 25% на 1 месяц по промокоду CPU_TURBO. Промокод сгорит в полночь на 4 октября 2019 года. Также можно взять сервер на бесплатный трехдневный тест.
P.S. На всех фотографиях наш HR Generalist Соня.