Комментарии 10
Были взяты 64шт. CPU ядер с частотой 2,6 ГГц, выделенных на сервере ARM (SoC HUAWEI Kunpeng 920), и 28шт. CPU ядер с частотой 3,0 ГГц, выделенных на сервере x86
Т.е. для обеспечения паритета к 28 ядер интел надо 64 ядра АРМ? Да и как то непонятно, в общей сложности у вас указано что сервер то 2х64 ядра. т.е. 128 ядер АРМ против 28 ядер интел?
А мы сами должны догадаться про стоимость серверов и TCO и кол-во транзакций на единицу денежки
Тестирование 28шт. ядер на x86 и 64шт. на ARM проводилось отдельное (оно по сути и методике одинаковое с тем, что описано в этой статье) и его основной идеей являлось сравнить производительность решений с примерно одинаковой стоимостью (т.е. учитывался cost-performance). ARM процессор Kunpeng 920 не поддерживает одновременную многопоточность (SMT) в отличие от процессоров Xeon Scalable c HT и в целом для текущего теста был взят open-source PostgreSQL. В целом производительность Kunpeng 920 выпущенного в 2019г. до сих пор является одной из самых лучших и не уступает другим решениям на рынке. Вот для сравнения отчеты SPECrate2017_int с результатами тестирования сервера с Intel Xeon Gold 6240 https://www.spec.org/cpu2017/results/res2019q2/cpu2017-20190415-11976.html и Huawei Kunpeng 920 7260 https://www.spec.org/cpu2017/results/res2020q2/cpu2017-20200529-22566.html
PostgreSQL очень хорошо масштабируется на HT-ядрах.
"дополнительное" HT-ядро может добавлять 70% (см. излом на https://elibsystem.ru/node/490).
Т.е. очень грубо, для PostgreSQL 28 ядер с HT2 эффективно будет под 48 ядер без HT.
Умножать ядра на частоту нельзя, но когда очень хочется, то для Intel 48 "эффективных ядер" x 3 ГГц = 144 эффективных ГГц на сервер, а ARM 64 x 2.6 ГГц = эффективных 166 ГГц.
Ну какую-то такую разницу и видно в сравнении производительностей.
А prefetch зачем на нём выключали? Он так плох, что портит результаты?
Настройку CPU prefetch рекомендуется отключать скорее из-за характера нагрузки. Т.к. изначально планировалось запускать приложение, которое интенсивно работает с памятью и также много производит выборки данных случайным образом, то настройку рекомендуется отключать, т.к. иначе наблюдается некоторая потеря производительности. Скорее всего в условиях обычной эксплуатации серверов, т.е. вне задачи запуска benchmark теста вроде pgbench, отключать prefetcher не надо было бы и производительность была бы лучше с включенной настройкой CPU prefetch.
Как верхний и нижний графики соотносятся друг с другом ? Желтый цвет вы специально выбрали, чтобы мы глаза ломали ?
Я вот подумал - и понял, что в сравнении не хватает современных процессоров AMD, с соответствующим подсчетом TCO.
P.S. Не подумайте плохого - я рад, что ARM таки прогрызает себе дорогу в серверные продакшн-решения. Но хочу всё знать.
Опыт тестирования PostgreSQL 13 на ARM-серверах HUAWEI TaiShan 200