AMD EPYC как платформа сервера SQL

29.05.2023 | Серверы

 

Рабочие нагрузки сервера баз данных

Два основных типа нагрузок баз данных – Online Transaction Processing (OLTP) и Data Warehouse (DW).

OLTP – обработка транзакций в реальном времени. С потоками обращений чтения/записи произвольного доступа лучше справляются NVMe накопители, как для областей данных, так и при записи в журналы транзакций – благодаря минимальному времени отклика. Имеет значение однопоточная производительность CPU (производительность одного физического ядра).

Хранилища данных DW потребляют ресурсы CPU, памяти и ввода-вывода. Сервер SQL может выполнять операции запросов или индексов параллельно, в несколько рабочих потоков, что обеспечивает скорость и эффективность.

CPU

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

Системы с одним процессорным сокетом лучше подходят для программ, зависящих от задержек памяти. Два сокета могут дать выигрыш приложениям, зависящим от пропускной способности памяти. Стоит отметить, что процессоры четвертых поколений AMD EPYC и Intel Xeon Scalable (9004 "Genoa" и "Sapphire Rapids" соответственно) поддерживают память DDR5 с удвоенной против DDR4 пропускной способностью. Так что 12 каналов памяти DDR5 одного AMD EPYC 9004 "Genoa" обеспечивают более широкую полосу, чем два процессора предыдущего поколения, AMD EPYC 7003 "Milan" или Intel Xeon Scalable "Cooper Lake", с их 8 каналами DDR4.

Однопоточная производительность процессора важна потому, что более высокочастотный CPU выполнит запросы быстрее. В приложениях, работающих в один поток, это особенно ощутимо. Серверы SQL разработаны для обработки нескольких параллельных соединений, но каждую запись в журнале транзакций необходимо обрабатывать последовательно. Короче говоря, много пользователей может быть подключено к серверу через несколько потоков, но в любой момент времени может произойти только одна транзакция. Чем больше тактовая частота процессора в ГГц (количество тактов, которые он может выполнить в секунду) и количество инструкций, выполняемых за такт (Instructions Per Clock, IPC), тем быстрее выполнение транзакций.

Следует учитывать расходы на лицензирование. Microsoft Windows Server и Microsoft SQL Server лицензируются с привязкой к количеству ядер. Высокая тактовая частота CPU лучше количества ядер. Гленн Берри, эксперт по SQL, в своих рекомендациях серверных процессоров всегда напоминает о влиянии ошибок проектирования на общую цену владения. Его независимые оценки – как призыв «Не используйте Cooper Lake для сервера SQL!» - продиктованы исключительно практическими соображениями.

AMD EPYC

Семейство AMD EPYC 9004 имеет до 96 ядер/192 потоков с двенадцатью каналами памяти DDR5-4800 и 128 линиями PCIe 5. Появилась поддержка набора инструкций AVX-512, которые SQL Server 2022 может использовать для обработки запросов Columnstore в пакетном режиме.

Производительность ощутимо возросла по сравнению с предшественниками – семейством 7003 «Milan»: IPC на 14%, повысился верхний предел базовой и ускоренной тактовой частоты. Однопоточная производительность должна прибавить 25-30% в большинстве рабочих нагрузок. Вот некоторые сравнения:

Процессоры AMD EPYC 9004 разложены по трем корзинам: Core Performance, Core Density, Balanced and Optimized. «Производительные» обозначены буквой «F», они имеют повышенную тактовую частоту и поэтому рекомендованы для сервера SQL.

Гленн Берри приводит оценки показателей теста TPC-E обработки онлайновых транзакций для F-процессоров, вместе со стоимостью лицензий по калькулятору Microsoft SQL Server 2022 :

Оценка TPC-E/ядро является показателем однопоточной производительности процессора. Общее правило для CPU сервера SQL: «меньше ядер/выше частота».

В пространном документе Microsoft SQL Server Tuning Guide for AMD EPYC 9004 Processors приведены рекомендации по выбору CPU вместе с минимальными требованиями к памяти для сервера SQL по онлайн-обработке транзакций (OLTP):

Как видим, нужное количество процессорных ядер и объем памяти почти всегда способен предоставить односокетный сервер – упрощающий и удешевляющий серверную инфраструктуру.

NVMe

Рабочие нагрузки OLTP требуют низких задержек обращения к накопителям под воздействием интенсивных запросов. Это касается всех областей данных: основных и временных таблиц, индексов и журнала транзакций – из-за высокой скорости вставок и/или обновления.

Оптимальными являются NVMe накопители. Давно речь не идет об использовании в производительных серверах механических дисков, в любой роли – SSD быстрее, легче, долговечнее и потребляют меньше энергии. Но SATA/SAS SSD уступают NVMe SSD по всем показателям, в произвольном и последовательном доступе – при том, что у SATA SSD уже нет ценового преимущества.

Процессоры AMD EPYC 9004 поддерживают PCIe 5 с удвоенной против PCIe 4 пропускной способностью ввода/вывода. Высокая потоковая скорость не является определяющей характеристикой накопителей OLTP-сервера, но дает преимущества в аналитике, при обмене, резервировании и восстановлении данных.

Применяются все обычные правила настройки I/O: использование RAID 1 или 10, разнесение журнала и данных по физически разным носителям, хранение холодных данных отдельно, распределение ввода/вывода между другими контроллерами на шине PCIe и т.д.

Однопроцессорные серверы AMD EPYC

Односокетная стратегия AMD давно нашла широкую поддержку со стороны основных производителей серверов (чего не скажешь об их же отношении к подобным попыткам Intel). Ресурсов одного процессора AMD EPYC достаточно для SQL-сервера большинства предприятий. Когда требования к хранению не выходят за пределы нескольких десятков терабайт, все данные следует размещать на твердотельных носителях.

Dell PowerEdge R6615, HPE ProLiant DL325 Gen11, Lenovo ThinkSystem SR635 V3, ASUS RS500A-E12-RS12U, Gigabyte R163-Z32, Supermicro AS-1115CS-TNR, Tyan B80056G68 - вот неполный перечень только 1U-серверів на одном AMD EPYC 9004. С поддержкой от 16 до 96 процессорных ядер, до 3ТБ памяти, от 8 до 12 NVMe SSD  1U-платформа AMD EPYC – относительно недорогое, но мощное оружие. Остается проследить при заказе сервера, чтобы его объединительная плата поддерживала не только SATA, но и U.2 NVMe накопители. Это позволит выжать максимум производительности в интенсивных дисковых операциях.