Как измерить производительность виртуального сервера?

11

У меня есть VPS под управлением Ubuntu. Будучи виртуальным сервером, я понимаю, что он разделяет ресурсы с неизвестным числом других серверов, и я замечаю, что он значительно медленнее, чем мой настольный компьютер.

Есть ли какой-нибудь инструмент для измерения производительности виртуальной машины ? Мне было бы любопытно увидеть приблизительную меру, похожую на bogomips, возможно, для процессора (операций / сек), памяти и скорости чтения / записи диска. Я хотел бы иметь возможность сравнить эти цифры с моим настольным компьютером.

Меня не интересуют спецификации реальной физической машины, на которой работает мой VPS - тем самым cat /proc/cpuinfoя вижу, что это хорошая четырехъядерная машина Xeon, но для меня это не имеет значения. В основном меня интересует, как быстро программа будет работать в моем VPS - сколько операций ЦП она может выполнить за секунду, сколько байтов записать в ОЗУ или на диск.

У меня есть только SSH доступ к машине, поэтому инструмент должен быть из командной строки.

Я мог бы написать скрипт, который, скажем, выполняет некоторые вычисления в цикле за секунду и подсчитывает, сколько циклов он смог сделать, или что-то подобное для измерения производительности диска и оперативной памяти. Но я уверен, что нечто подобное уже существует.

Сергей
источник

Ответы:

14

Ну, так как никто не хочет отвечать ... :)

Поиск Synaptic для «стенда» находит множество тестов, способных тестировать различные аспекты машины. Единственное, о чем я слышал ранее, это то phoronix-test-suite, что, я уверен, очень всеобъемлющее, хотя мой короткий объем внимания не позволил мне понять, как его использовать.

Затем я нашел UnixBench , который описывается как

UnixBench - это оригинальный набор тестов BYTE UNIX, который многие годы обновлялся и пересматривался многими людьми.

Цель UnixBench - предоставить базовый показатель производительности Unix-подобной системы; ... Эти результаты испытаний затем сравниваются с оценками базовой системы для получения значения индекса, которое обычно легче обрабатывать, чем необработанные оценки.

Многопроцессорные системы обрабатываются. ... Тесты сравнивают системы Unix, сравнивая их результаты с набором баллов, установленным путем запуска кода в эталонной системе, которая представляет собой SPARCstation 20-61 (с рейтингом 10.0).

UnixBench упоминается Linode как инструмент для тестирования производительности виртуальных машин в этом блоге :

Используя идентичное оборудование, линзы KVM намного быстрее по сравнению с Xen. Например, в нашем тестировании UnixBench KVM Linode набрал в 3 раза больше, чем Xen Linode.

Набор тестов НЕ находится в репозиториях Ubuntu, но его просто скачать и скомпилировать:

wget https://github.com/kdlucas/byte-unixbench/archive/master.zip
unzip ./master.zip
cd ./byte-unixbench-master/UnixBench
./Run

Тесты требуют времени, чтобы закончить. Выход выглядит как

------------------------------------------------------------------------
Benchmark Run: Mon Oct 15 2012 23:55:22 - 00:23:16
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       12015218.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2214.8 MWIPS (10.1 s, 7 samples)
Execl Throughput                                896.9 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         58968.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           14578.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        422068.2 KBps  (30.0 s, 2 samples)
Pipe Throughput                               70993.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  16001.5 lps   (10.0 s, 7 samples)
Process Creation                               1861.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2525.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    737.8 lpm   (60.1 s, 2 samples)
System Call Overhead                         432496.2 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12015218.4   1029.6
Double-Precision Whetstone                       55.0       2214.8    402.7
Execl Throughput                                 43.0        896.9    208.6
File Copy 1024 bufsize 2000 maxblocks          3960.0      58968.3    148.9
File Copy 256 bufsize 500 maxblocks            1655.0      14578.6     88.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     422068.2    727.7
Pipe Throughput                               12440.0      70993.3     57.1
Pipe-based Context Switching                   4000.0      16001.5     40.0
Process Creation                                126.0       1861.8    147.8
Shell Scripts (1 concurrent)                     42.4       2525.5    595.6
Shell Scripts (8 concurrent)                      6.0        737.8   1229.7
System Call Overhead                          15000.0     432496.2    288.3
                                                                   ========
System Benchmarks Index Score                                         249.7

------------------------------------------------------------------------
Benchmark Run: Tue Oct 16 2012 00:23:16 - 00:51:20
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       42619039.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     8274.0 MWIPS (10.4 s, 7 samples)
Execl Throughput                               3398.5 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         68332.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           21462.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        718205.6 KBps  (30.0 s, 2 samples)
Pipe Throughput                              149713.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  61968.3 lps   (10.0 s, 7 samples)
Process Creation                               5321.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5957.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    812.6 lpm   (60.1 s, 2 samples)
System Call Overhead                        1557391.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   42619039.2   3652.0
Double-Precision Whetstone                       55.0       8274.0   1504.4
Execl Throughput                                 43.0       3398.5    790.4
File Copy 1024 bufsize 2000 maxblocks          3960.0      68332.4    172.6
File Copy 256 bufsize 500 maxblocks            1655.0      21462.9    129.7
File Copy 4096 bufsize 8000 maxblocks          5800.0     718205.6   1238.3
Pipe Throughput                               12440.0     149713.5    120.3
Pipe-based Context Switching                   4000.0      61968.3    154.9
Process Creation                                126.0       5321.7    422.4
Shell Scripts (1 concurrent)                     42.4       5957.1   1405.0
Shell Scripts (8 concurrent)                      6.0        812.6   1354.3
System Call Overhead                          15000.0    1557391.5   1038.3
                                                                   ========
System Benchmarks Index Score                                         592.5

Это означает, что рассматриваемый VPS имеет оценку 249,7 для одной задачи и 592,5 для параллельной обработки.

Мой настольный компьютер, хотя характеристики которого были такими же или более низкими, чем физический компьютер, на котором работает мой VPS, показал 1409,7 балла за одну задачу и 5156,3 за параллельную обработку. Именно такую ​​метрику я искал.

Другой важный показатель - скорость сети. Я нашел скрипт, который загружает тестовые файлы из разных мест и измеряет скорость загрузки. Скрипт может быть запущен с

wget freevps.us/downloads/bench.sh -O - -o /dev/null|bash

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

Для мониторинга задержки дискового ввода-вывода есть iopingутилита, которую можно установить из репозиториев Ubuntu:

# ioping . -c 10
4096 bytes from . (ext4 /dev/disk/...): request=1 time=16.4 ms
4096 bytes from . (ext4 /dev/disk/...): request=2 time=16.1 ms
...
Сергей
источник
UnixBench теперь на Github: github.com/kdlucas/byte-unixbench
m0j0
@ m0j0: я изменил ответ, чтобы отразить его в GitHub, спасибо
Сергей,
Эти 2 команды wget https://github.com/kdlucas/byte-unixbench/archive/master.zip && unzip ./master.zipмогут быть заменены просто git clone https://github.com/kdlucas/byte-unixbench.
Привет-Ангел
0

Это может быть невозможно. Вы не предоставляете никаких подробностей, поэтому никто не может дать конкретные ответы. Но не все VPS означают виртуальное оборудование. У вас есть все виды различных решений, таких как Linux Containers (LXC), которые радикально отличаются от рендеринга виртуальной машины с определенными особенностями.

Единственная цель совместного использования оборудования - это его повторное использование. В вашем случае, даже если вы используете виртуализированное оборудование, вы не можете быть уверены, что используете его только вы. Если вам нужна информация об использовании оборудования, вы должны вместо этого получить физически расположенный сервер.

Джо-Эрленд Шинстад
источник
Ааа, я думаю, вы меня неправильно поняли - я не говорю о базовой физической машине. Я обновил свой вопрос.
Сергей
Да, но все же. Компьютер может отличаться от одного момента к другому, поэтому любое среднее значение бесполезно. В один момент он может иметь 16 ядер ЦП и 32 ГБ ОЗУ, а в другой - 1 ядро ​​и 512 МБ ОЗУ. Среднее может быть очень плохим или лучше, чем теоретически возможно, в зависимости от того, когда вы рассчитываете. Вы можете получить некоторые данные из "ps ax", "top", "iotop" и "uptime", но это не будет стоить много.
Джо-Эрленд Шинстад
2
Хорошо, пример: я заархивировал 1 ГБ файл на своем нетбуке и измерил время, необходимое для выполнения задачи. Затем я заархивирую тот же файл на своем рабочем столе - оказывается, мой рабочий стол делает это в 3 раза быстрее, чем нетбук, поэтому я даю им «gzip rating» 100 и 300 соответственно. Затем я сжимаю тот же файл на VPS и нахожу, скажем, что во время теста он в 1,5 раза быстрее, чем нетбук, но все же в 2 раза медленнее, чем настольный компьютер - так что это «коэффициент gzip» 150. Я могу придумать как-то так, но, конечно, измерение производительности - обычная проблема
Сергей
Измерение производительности хорошо, если вы знаете, какой компьютер вы измеряете. С VPS вы не обязательно это знаете. Он может быть перемещен между множеством совершенно разных компьютеров без вашего ведома, могут быть добавлены и удалены процессоры, добавлена ​​и удалена оперативная память и т. Д. Или другой VPS начинает использовать большое количество процессоров в течение 25 секунд, что замедляет ваш VPS. Там слишком много переменных.
Джо-Эрленд Шинстад
Похоже, может быть ниша для инструмента мониторинга производительности VPS.
justingrif