Чому сервери не працюють завжди на макс.


12

Це питання, яке мене хвилює деякий час, і я не можу знайти щось в Інтернеті, яке б про це говорило. У мене є сервер під управлінням VMware Hypervisor ESXi. Коли я завантажую на ньому віртуальні машини, зазвичай на них потрібно 2-3 хвилини; не страшенно довго, але не миттєво. Однак, коли я дивлюся на журнали продуктивності на сервері, ні процесор, ні оперативна пам’ять, ні використання диска не становлять близько 100%; зазвичай вони становлять близько 60% -80%. Отже, якщо сервер має роботу, чому він не робить це на 100%?

Мені здається, що в будь-який момент компонент, що обмежує продуктивність, повинен працювати на 100%. Наприклад, якщо у мене дійсно повільний жорсткий диск, то він майже завжди повинен працювати на 100%. Тому хоча б одна з областей (процесор, оперативна пам’ять, диск та мережа) завжди має бути на 100%, якщо тільки сервер не працює в режимі очікування.

Чому це не так?


Старі дистрибутиви Linux, не засновані на systemd, не могли ефективно паралелізувати запуск. * BSD все ще страждають від цього. Завантажте сучасний дистрибутив Linux і подивіться, чим він відрізняється.
Майкл Хемптон

Відповіді:


18

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

Ресурси, ймовірно, працюють на 100%, але на дуже короткі періоди. Запуск завантаження операційної системи буде дотримуватися загальної схеми "обробити або вирішити щось, взяти щось з диска, зробити щось на пам'ять, зробити щось з пристроєм", повторюючи багато разів на секунду. Тож коли ви бачите диск на 25% протягом 2-секундного періоду, що, ймовірно, означає, що він працював на 100% протягом 0,5 секунд, а потім простоюйте решту часу.

Як зазначав EEAA, багатоядерні системи роблять це дещо складніше. Один потік програмного забезпечення на процесорі, який може виконати чотири потоки, може досягти лише 25%, що працює на повній швидкості. Навіть багатопотокове програмне забезпечення рідко може досягти 100%, тому що дані мають надходити (як правило) з жорсткого диска, в оперативну пам'ять, в кеш, в процесор. Утримувати цей трубопровід повною є складно, і це, як правило, відбувається з таким передбачуваним навантаженням, як кодування відео. У цьому випадку операційна система може спостерігати шаблони зчитування та отримувати дані, перш ніж це буде потрібно, розміщуючи їх у відповідних кешах, наприклад, кеш диска в оперативній пам'яті.


16

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

По-перше, і, можливо, найпростіше, в багатоядерній системі, щоб зрозуміти використання процесора, ви повинні врахувати, чи є навантаження процесу багатопоточним, і розроблене для використання декількох ядер. Якщо це не так, залежно від сукупності запущених процесів ви, можливо, ніколи не побачите 100% використання. Колись.

По-друге, потрібно врахувати продуктивність пристрою IO. Як ваша система, наприклад, знає, скільки IOps здатні ваші пристрої? Це не так. Більш значущим показником для перегляду є ваше iowaitзначення під час завантаження (яке може бути важко отримати під час завантаження) або дискові черги / затримки під час завантаження (що має бути простіше отримати у гіпервізора). Якщо ви бачите черги чи сплеск затримки, цілком ймовірно, що ваші пристрої вводу-виводу є фактором, що сприяє вашій ефективності.


11

Я працюю з сервером вже близько 20 років, зазвичай це не дуже добре, коли компонент весь час працює на 100%.

Наприклад, скажімо, що у вас є база даних SQL, яку ви не хочете міняти на диск, а натомість хочете повністю вичерпати пам'ять.

Якщо у вашій базі даних 24 ГБ, а ОС потрібні 8 Гб, ви не хочете виділяти 32 ГБ оперативної пам’яті для машини, є багато «речей», які можуть піти не так, поганий код, DDOS, велике використання додатків, хто знає, не маючи жодної головної кімнати, як би ви знали, що сервер у біді?

У нашому центрі обробки даних є близько 2000 серверів, ми любимо бачити, як вони працюють на 75% процесора та оперативної пам'яті. У нас також є сповіщення про те, коли вони потрапляють до 85% процесора або оперативної пам’яті, і сигнали про те, коли вони потрапляють на 90%.


Я думаю, ти тут трішки відступив. Я сказав, що я запускаю віртуальні машини, тому існує послідовне навантаження, що сильно відрізняється від сервера баз даних, який працює, коли він отримує запити та розподіляє ресурси. Мене більше хвилювало те, що є обмежуючим фактором ефективності, а не тим, як розподіляються ці ресурси. Але дякую за відповідь!
Kernel Stearns
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.