Jak zmierzyć wydajność serwera wirtualnego?

11

Mam VPS z systemem Ubuntu. Jako serwer wirtualny rozumiem, że dzieli zasoby z nieznaną liczbą innych serwerów i zauważam, że jest znacznie wolniejszy niż mój komputer stacjonarny.

Czy jest jakieś narzędzie do pomiaru wydajności maszyny wirtualnej ? Byłbym ciekawy, aby zobaczyć przybliżoną miarę podobną do Bogomips, prawdopodobnie dla procesora (operacje / s), pamięci i prędkości odczytu / zapisu dysku. Chciałbym móc porównać te liczby z komputerem stacjonarnym.

Nie interesują mnie specyfikacje rzeczywistej fizycznej maszyny, na której działa VPS - cat /proc/cpuinfowidząc, że jest to ładna czterordzeniowa maszyna Xeon, ale nie ma to dla mnie znaczenia. Zasadniczo jestem zainteresowany tym, jak szybko program będzie działał na moim VPS - ile operacji procesora może wykonać w ciągu sekundy, ile bajtów zapisać w pamięci RAM lub na dysk.

Mam tylko dostęp ssh do maszyny, więc narzędzie musi być wierszem poleceń.

Mógłbym napisać skrypt, który, powiedzmy, wykonuje kilka obliczeń w pętli przez sekundę i zlicza, ile pętli był w stanie wykonać, lub coś podobnego do mierzenia wydajności dysku i pamięci RAM. Ale jestem pewien, że coś takiego już istnieje.

Siergiej
źródło

Odpowiedzi:

14

Skoro nikt nie chce odpowiedzieć ... :)

Wyszukiwanie „bench” w Synaptic pozwala znaleźć wiele zestawów testów porównawczych zdolnych do testowania różnych aspektów maszyny. Jedyne, o czym słyszałem wcześniej, jest z phoronix-test-suitepewnością bardzo obszerne, chociaż moja krótka uwaga nie pozwoliła mi wymyślić, jak go używać.

Potem znalazłem UnixBench , który jest opisany jako

UnixBench to oryginalny pakiet testów BYTE UNIX, aktualizowany i aktualizowany przez wiele osób na przestrzeni lat.

Celem UnixBench jest dostarczenie podstawowego wskaźnika wydajności systemu podobnego do Uniksa; ... Te wyniki testu są następnie porównywane z wynikami z systemu podstawowego w celu uzyskania wartości indeksu, który jest ogólnie łatwiejszy w obsłudze niż wyniki surowe.

Obsługiwane są systemy wieloprocesorowe. ... Testy porównują systemy uniksowe, porównując ich wyniki z zestawem wyników zestawionych przez uruchomienie kodu w systemie testowym, którym jest SPARCstation 20-61 (ocena 10,0).

UnixBench jest wspomniany przez Linode jako narzędzie do testowania wydajności maszyn wirtualnych w tym blogu :

Używając identycznego sprzętu, kody KVM są znacznie szybsze w porównaniu do Xen. Na przykład, w naszym teście UnixBench, Linode KVM uzyskało 3-krotnie lepsze wyniki niż Linode Xen.

Pakiet testowy NIE znajduje się w repozytoriach Ubuntu, ale jego pobranie i kompilacja jest prosta:

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

Testy trwają chwilę. Wygląda jak

------------------------------------------------------------------------
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

Co oznacza, że ​​VPS ma wynik 249,7 dla pojedynczego zadania i 592,5 dla przetwarzania równoległego.

Mój komputer stacjonarny, choć ma podobną lub niższą specyfikację niż maszyna fizyczna, na której działa mój VPS, uzyskał wynik 1409.7 dla pojedynczego zadania i 5156,3 dla przetwarzania równoległego. Dokładnie taki rodzaj danych, którego szukałem.

Kolejną ważną miarą jest prędkość sieci. Znalazłem skrypt, który pobiera pliki testowe z różnych lokalizacji i mierzy prędkość pobierania. Skrypt można uruchomić za pomocą

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

(chociaż prawdopodobnie bezpieczniej byłoby pobrać skrypt i sprawdzić jego zawartość przed uruchomieniem)

Aby monitorować opóźnienie we / wy dysku, istnieje iopingnarzędzie, które można zainstalować z repozytoriów 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
...
Siergiej
źródło
UnixBench jest teraz na Github: github.com/kdlucas/byte-unixbench
m0j0
@ m0j0: Zmodyfikowałem odpowiedź, aby odzwierciedlić, że teraz jest hostowana w GitHub, dzięki
Sergey
Te 2 polecenia wget https://github.com/kdlucas/byte-unixbench/archive/master.zip && unzip ./master.zipmożna zastąpić just git clone https://github.com/kdlucas/byte-unixbench.
Cześć Angel
0

To może nie być możliwe. Nie podajesz żadnych szczegółów, więc nikt nie może udzielić konkretnych odpowiedzi. Ale nie wszystkie VPS to wirtualny sprzęt. Masz różnego rodzaju rozwiązania, takie jak Linux Containers (LXC), który radykalnie różni się od renderowania maszyny wirtualnej o określonych właściwościach.

Jedynym celem udostępniania sprzętu jest jego ponowne użycie. W twoim przypadku, nawet jeśli używasz zwirtualizowanego sprzętu, nie możesz być pewien, że tylko on go używa. Jeśli potrzebujesz informacji na temat wykorzystania sprzętu, powinieneś zamiast tego uzyskać fizycznie zlokalizowany serwer fizyczny.

Jo-Erlend Schinstad
źródło
Achh, myślę, że źle mnie zrozumiałeś - nie mówię o podstawowej maszynie fizycznej. Zaktualizowałem moje pytanie.
Siergiej
Tak, ale nadal. Komputer może nie być taki sam z jednej chwili na drugą, więc każda średnia jest bezużyteczna. W jednym momencie może mieć 16 rdzeni procesora i 32 GB pamięci RAM, aw drugim 1 rdzeń i 512 MB pamięci RAM. Średnia może być bardzo słaba lub lepsza niż teoretycznie możliwa, w zależności od obliczeń. Możesz uzyskać dane z „ps ax”, „top”, „iotop” i „uptime”, ale nie będzie to wiele warte.
Jo-Erlend Schinstad
2
Ok, przykład: zgubiłem plik 1Gb na swoim netbooku i mierzę czas potrzebny do wykonania zadania. Następnie gzip ten sam plik na pulpicie - okazuje się, że mój pulpit robi to 3 razy szybciej niż netbook, więc daję im „ocenę gzip” odpowiednio 100 i 300. Następnie kompresuję ten sam plik na VPS i stwierdzam, że w momencie testu jest on 1,5 razy szybszy niż netbook, ale nadal 2 razy wolniejszy niż komputer stacjonarny - więc jest to „współczynnik gzip” równy 150. Mogę wymyślić coś takiego sam, ale z pewnością mierzenie wydajności jest częstym problemem
Sergey
Mierzenie wydajności jest w porządku, o ile wiesz, który komputer mierzysz. Z VPS niekoniecznie o tym wiesz. Może być przenoszony między wieloma zupełnie różnymi komputerami bez twojej wiedzy, procesory mogą być dodawane i usuwane, RAM dodawane i usuwane itp. Lub inny VPS zaczyna używać dużej ilości procesora przez 25 sekund, co spowalnia twój VPS. Jest zbyt wiele zmiennych.
Jo-Erlend Schinstad
Wygląda na to, że może istnieć nisza dla narzędzia do monitorowania wydajności VPS.
justingrif