Перейти до вмісту
EuroVPSEuroVPS

Чому ваш новий сервер у бенчмарках повільніший за старий, хоча насправді ні.

Нижче значення bogomips після міграції не є повільнішим сервером, це артефакт віртуалізації. Що воно вимірює насправді і як перевірити реальну роботу.

Автор EuroVPS EngineeringМашинне відділення

4 хв читання
У цій статті 5 розділів

Поширене запитання після міграції: чи означає нижче значення bogomips повільніший сервер. Не означає. Ось як ми на нього відповіли.

Коротко
  • Клієнт, який щойно мігрував на нашу платформу, помітив, що значення під назвою bogomips читається нижчим, ніж на його старому сервері, і запитав, чи новий сервер повільніший.
  • bogomips не вимірює нічого, що ви хотіли б купити. Це калібрувальний цикл, який ядро виконує при завантаженні, щоб відміряти власні внутрішні затримки. На віртуальному хості воно відображає представлений гостю тактовий сигнал, тоді як фізичне ядро під ним досі працює на повному turbo.
  • Не беріть замінник на віру. Запустіть реальні бенчмарки самі, криптографічні й CPU-навантаження, на обох машинах: новіше покоління процесора швидше, з ширшими інструкціями. Реальна робота відповідає на запитання.
  • Урок: вимірювання настільки добре, наскільки добре те, що воно вимірює. Не сперечайтеся про замінник. Назвіть, що він вимірює насправді, а потім дозвольте реальній роботі все вирішити.

Число за запитанням

Він порівняв bogomips на своїй старій машині і на новій, і нове значення виявилося нижчим. Прочитане буквально, це виглядає як пониження. Це не так, і щоб зрозуміти чому, треба знати, що це за число.

THE READING BEHIND THE QUESTION
$ grep -m1 bogomips /proc/cpuinfo

Що насправді вимірює bogomips

bogomips не є бенчмарком. Це калібрувальний цикл, який ядро виконує один раз при завантаженні, щоб відміряти власні внутрішні часові затримки і знати приблизно, скільки порожніх циклів уміщується в заданий інтервал. Назва є жартом розробників ядра над самими собою: bogus millions of instructions per second, фальшиві мільйони інструкцій за секунду. На віртуалізованому хості це число ще фальшивіше, ніж зазвичай, бо воно відображає представлений гостю тактовий сигнал, значення, яке гіпервізор передає VM, тоді як фізичне ядро під ним досі працює на повному turbo. Нижче значення bogomips є особливістю того, як віртуалізація показує тактовий сигнал, а не втратою чогось реального.

“bogomips не вимірює нічого, що ви хотіли б купити.”

EUROVPS ENGINEERING
ЩО ЗМІНИЛОСЯ НАСПРАВДІ

Показання впало. Кремній ні.

Метрика-замінник проти реальної роботи

Кожна суперечка «мій сервер став повільнішим» насправді є суперечкою про те, що ви вирішили виміряти. Поставте замінник поруч із роботою, і суперечка закінчиться.

ЗАМІННИК: BOGOMIPSРЕАЛЬНА РОБОТА: БЕНЧМАРК
Чим воно є насправдіКалібрувальний цикл, який ядро виконує один раз при завантаженні, щоб відміряти власні часові затримкиКриптографічні й CPU-навантаження, які заміняють те, що робить ваш застосунок під навантаженням
Що воно показує на віртуальному хостіПредставлений гостю тактовий сигнал, число, яке гіпервізор передає VMВиконані інструкції на фізичному ядрі, що досі працює на повному turbo
ТОЙ, ЩО МАЄ ЗНАЧЕННЯЧи рухається воно, коли обладнання стає новішим?Ненадійно. Воно відстежує віртуалізоване значення тактового сигналу, а не кремнійТак. Новіше покоління з ширшими інструкціями робить більше за цикл
Коли воно вимірюєтьсяОдин раз, при завантаженні, і більше ніколиНа вимогу, скільки завгодно разів, вами
Чи можна його купити?Ніхто не продає bogomips, і жоден користувач ніколи його не відчувТак. Це робота, за яку ви платите, щоб вона виконувалася швидше

Вимірюйте роботу, а не замінник

Програшний хід полягає в тому, щоб сказати, що bogomips нічого не означає, і зупинитися на цьому, бо це просить клієнта обміняти його число на наше слово. Тож ми зробили навпаки. Ми назвали, що насправді вимірює bogomips, а потім дали йому бенчмарки, щоб він запустив їх сам: реальні криптографічні й CPU-навантаження, ті, що заміняють те, що насправді робить застосунок. Ми додали одну примітку. Новіше покоління процесора під його VM швидше, з ширшими інструкціями, тож реальна робота, дуже ймовірно, покаже результат попереду, а не позаду.

WHAT WE HANDED HIM
# stop measuring the proxy. measure the work.
$ openssl speed -evp aes-256-gcm          # cryptographic throughput
$ sysbench cpu --cpu-max-prime=20000 run  # raw CPU work
# run on the old box and the new one, then compare the work, not the clock.
01

Вимірюйте роботу, а не тактовий сигнал.

Оберіть навантаження, схожі на ваш застосунок. Криптографічна пропускна здатність і тест CPU є справедливим, чесним початком. bogomips, MHz і однозначні «оцінки» є замінниками. Пропустіть їх.

02

Запускайте однакові команди на обох машинах.

Єдине, що ви порівнюєте, це скільки реальної роботи кожна з них завершує за той самий астрономічний час.

03

Дозвольте результату все вирішити.

Якщо нова машина робить більше роботи, міграція була оновленням, а значення bogomips було шумом. Якщо вона справді робить менше, тепер у вас є реальне число, і тепер у нас є те, що варто розслідувати разом.

Урок

Вимірювання настільки добре, наскільки добре те, що воно насправді вимірює. Коли клієнт приходить з метрикою-замінником, хід полягає не в тому, щоб сперечатися про число. А в тому, щоб назвати, що число вимірює насправді, а потім дозволити реальній роботі все вирішити. Машина під ним була спокійною і швидкою весь час. Єдине, що стало повільнішим, це бенчмарк.

Прямі відповіді

Чи є нижче число bogomips на моєму новому сервері проблемою?+

Майже ніколи. bogomips є калібрувальним циклом ядра при завантаженні, а не бенчмарком продуктивності. На віртуальній машині воно відображає представлений гостю тактовий сигнал, тоді як фізичне ядро під ним може досі працювати на повному turbo. Нижче значення зазвичай є артефактом віртуалізації, а не втраченою продуктивністю.

Чому bogomips нижчий на віртуальній машині або після переходу на VPS?+

Бо гіпервізор представляє гостю значення тактового сигналу, а ядро калібрується за цим представленим числом при завантаженні. Фізичне ядро продовжує працювати на своїй реальній, часто вищій, швидкості turbo. Показання змінилося. Кремній ні.

Мій новий сервер здається повільнішим після міграції. Що перевірити першим?+

Спочатку переконайтеся, що ви вимірюєте роботу, а не замінник на кшталт bogomips, тактової частоти в MHz чи синтетичної однозначної оцінки. Потім перевірте справжніх винуватців з нашого діагностичного сценарію: latency запитів до бази даних, глибину черги диска, насичення PHP workers або мережеве очікування. Після міграції перше, що ми перевіряємо, це чи змінилася метрика, а не машина.

Як насправді зрозуміти, чи мій новий сервер повільніший?+

Запустіть роботу, а не замінник. Протестуйте навантаження, схожі на ваш застосунок, тест криптографічної пропускної здатності (openssl speed) і тест CPU (sysbench), і запустіть однакові команди на обох машинах. Реальна робота вирішує все за хвилини.

Хіба нижча тактова частота нового CPU не є пониженням?+

Не сама по собі. Тактова частота є одним із вхідних параметрів. Новіше покоління з ширшими інструкціями робить більше роботи за цикл, тож може завершувати швидше за нижчої номінальної частоти. Саме тому однозначне показання вводить вас в оману.

Я щойно мігрував, і щось читається повільнішим. Чи допоможете перевірити?+

Так. Надішліть нам число. Ми скажемо, що воно насправді вимірює, і дамо вам бенчмарк, щоб ви запустили його самі. Якщо реальна робота справді повільніша, це справжній тікет, і ми розберемося разом з вами. Якщо ні, у вас буде доказ за пару хвилин.

Щойно мігрували, і щось читається повільнішим?

Надішліть нам число, і ми скажемо, що воно вимірює. Довіра не потрібна.

Поговоріть з інженером

Ви дійшли до кінця.

Застосуйте прочитане на практиці

Що ви запускаєте?

Розкажіть нам про навантаження, трафік і вимоги до відновлення. Почніть з конструктора сервера або обговоріть деталі з інженером.

Написано інженерами, які будують і експлуатують інфраструктуру, про яку йдеться.
Поговоріть з інженером
XIn

Залишилося 4 хв