Какой виртуальный сервер обладает более мощным процессором?

Как можно сравнить производительность двух виртуальных серверов с разными процессорами: первый сервер имеет одно виртуальное ядро Intel Core i9-12900K, а второй - процессор с названием "Common KVM processor"? Можно ли воспользоваться показателями Bogomips для сравнения? Как оценить результаты теста sysbench --test=cpu --cpu-max-prime=20000, проведенные на обоих серверах?
  • 14 апреля 2024 г. 15:09
Ответы на вопрос 2
В данном случае, процессор Intel Core i9-12900K будет обладать более мощными характеристиками по сравнению с "Common KVM processor", так как он является более современным и производительным процессором.

Для сравнения производительности двух виртуальных серверов можно воспользоваться несколькими методами, включая показатели Bogomips и результаты теста sysbench.

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

Тест sysbench --test=cpu --cpu-max-prime=20000 можно использовать для более точного сравнения производительности двух серверов. Результаты теста покажут, сколько времени каждый сервер занимает на выполнение заданной задачи, а это можно использовать для сравнения и определения более производительного сервера в данном случае.
Во первых, виртуальные серверы не подходят для числодробилок (исключение - использование GPU или других сопроцессоров типа FPGA, там обычно они делятся по честному), потому что физический сервер будет разделен между несколькими пользователями, и даже если ты наберешь тарифным планом максимальное количество процессоров/ядер, часть ресурсов (для серверных - 3-5%, а для десктопных железок до 10-30% в очень специфических случаях) будут тратиться на обслуживание виртуализации. 

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

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

Поэтому правильный ответ - процессор мощнее на физическом железе (bare metall) без виртуализации. При необходимости, для своих нужд, ты сможешь на нем запустить систему виртуализации (или лучше паравиртуализации).

p.s. тебе верно советуют, не смотреть на гигагерцы.
Все очень зависит от того как и какая задача запускается. Оптимизация кода, выбор архитиктуры (например 32-битная на 64-битной будет работать по другому, где то хуже где то лучше), глобальные параметры (размеры буферов пакетной обработки, количество запущенных воркеров/потоков, настройки кеширования и тюнинг файловой системы ос или выбор конфигурации хранилища,..). Это вопрос исследования, и только эксперименты могут дать какой то адекватный ответ. Еще раз - тестируй на реальном железе.
Похожие вопросы