Wie messe ich die Leistung eines virtuellen Servers?

11

Ich habe einen VPS mit Ubuntu. Als virtueller Server verstehe ich, dass er Ressourcen mit einer unbekannten Anzahl anderer Server teilt, und ich stelle fest, dass er erheblich langsamer ist als mein Desktop-Computer.

Gibt es ein Tool zum Messen der Leistung der virtuellen Maschine ? Ich wäre gespannt auf ein ungefähres Maß, das Bogomips ähnelt, möglicherweise für die Lese- / Schreibgeschwindigkeit von CPU (Operationen / Sek.), Speicher und Festplatte. Ich möchte diese Zahlen mit meinem Desktop-Computer vergleichen können.

Ich bin nicht an den Spezifikationen der tatsächlichen physischen Maschine interessiert, auf der mein VPS ausgeführt wird. Auf diese Weise cat /proc/cpuinfokann ich sehen, dass es sich um eine schöne Quad-Core-Xeon-Maschine handelt, aber das ist mir egal. Grundsätzlich interessiert mich, wie schnell ein Programm in meinem VPS ausgeführt wird - wie viele CPU-Vorgänge es in einer Sekunde ausführen kann, wie viele Bytes in den RAM oder auf die Festplatte geschrieben werden müssen.

Ich habe nur SSH-Zugriff auf die Maschine, daher muss das Tool über die Befehlszeile erfolgen.

Ich könnte ein Skript schreiben, das beispielsweise einige Berechnungen für eine Sekunde in einer Schleife ausführt und zählt, wie viele Schleifen es ausführen konnte, oder etwas Ähnliches, um die Festplatten- und RAM-Leistung zu messen. Aber ich bin mir sicher, dass so etwas schon existiert.

Sergey
quelle

Antworten:

14

Na da will niemand antworten ... :)

Wenn Sie Synaptic nach "Bench" durchsuchen, werden viele Benchmarking-Suiten gefunden, mit denen verschiedene Aspekte einer Maschine getestet werden können. Das einzige phoronix-test-suite, von dem ich zuvor gehört habe , ist , dass ich sicher sehr umfassend bin, obwohl ich aufgrund meiner kurzen Aufmerksamkeitsspanne nicht herausfinden konnte, wie ich es verwenden soll.

Dann habe ich UnixBench gefunden , das als beschrieben wird

UnixBench ist die ursprüngliche BYTE UNIX-Benchmark-Suite, die im Laufe der Jahre von vielen Menschen aktualisiert und überarbeitet wurde.

Der Zweck von UnixBench besteht darin, einen grundlegenden Indikator für die Leistung eines Unix-ähnlichen Systems bereitzustellen. ... Diese Testergebnisse werden dann mit den Ergebnissen eines Basissystems verglichen, um einen Indexwert zu erhalten, der im Allgemeinen einfacher zu handhaben ist als die Rohwerte.

Multi-CPU-Systeme werden gehandhabt. ... Die Tests vergleichen Unix-Systeme, indem sie ihre Ergebnisse mit einer Reihe von Bewertungen vergleichen, die durch Ausführen des Codes auf einem Benchmark-System, einer SPARCstation 20-61 (mit 10,0 bewertet), festgelegt wurden.

UnixBench wird von Linode in diesem Blog-Beitrag als Tool für VM-Leistungstests erwähnt :

Mit identischer Hardware sind KVM-Linodes im Vergleich zu Xen viel schneller. In unserem UnixBench-Test hat beispielsweise ein KVM-Linode dreimal besser abgeschnitten als ein Xen-Linode.

Die Testsuite befindet sich NICHT in Ubuntu-Repositorys, es ist jedoch trivial, sie herunterzuladen und zu kompilieren:

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

Die Tests dauern eine Weile. Die Ausgabe sieht aus wie

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

Dies bedeutet, dass der betreffende VPS eine Punktzahl von 249,7 für eine einzelne Aufgabe und 592,5 für die parallele Verarbeitung aufweist.

Mein Desktop-Computer hatte zwar ähnliche oder niedrigere Spezifikationen wie der physische Computer, auf dem mein VPS ausgeführt wird, erzielte jedoch eine Punktzahl von 1409,7 für einzelne Aufgaben und 5156,3 für die parallele Verarbeitung. Genau die Art von Metrik, nach der ich gesucht habe.

Eine weitere wichtige Messgröße ist die Netzwerkgeschwindigkeit. Ich habe ein Skript gefunden, das Testdateien von verschiedenen Speicherorten herunterlädt und die Downloadgeschwindigkeit misst. Das Skript kann mit ausgeführt werden

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

(obwohl es wahrscheinlich sicherer wäre, das Skript herunterzuladen und seinen Inhalt zu überprüfen, bevor es ausgeführt wird)

Zur Überwachung der E / A-Latenz von Datenträgern gibt es ein iopingDienstprogramm, das über Ubuntu-Repositorys installiert werden kann:

# 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
...
Sergey
quelle
UnixBench ist jetzt auf Github: github.com/kdlucas/byte-unixbench
m0j0
@ m0j0: Ich habe die Antwort geändert, um zu berücksichtigen, dass sie jetzt bei GitHub gehostet wird, danke
Sergey
Diese 2 Befehle wget https://github.com/kdlucas/byte-unixbench/archive/master.zip && unzip ./master.zipkönnten durch just ersetzt werden git clone https://github.com/kdlucas/byte-unixbench.
Hi-Angel
0

Das ist vielleicht nicht möglich. Sie geben keine Details an, sodass niemand spezifische Antworten geben kann. Aber nicht alle VPS bedeuten virtuelle Hardware. Sie haben alle möglichen Lösungen, wie z. B. Linux Containers (LXC), die sich grundlegend vom Rendern einer virtuellen Maschine mit bestimmten Besonderheiten unterscheiden.

Der einzige Punkt beim Teilen von Hardware ist die Wiederverwendung. Selbst wenn Sie virtualisierte Hardware verwenden, können Sie in Ihrem Fall nicht sicher sein, dass Sie der einzige sind, der diese verwendet. Wenn Sie Informationen zur Hardwareauslastung benötigen, sollten Sie stattdessen einen physischen Server am selben Standort erwerben.

Jo-Erlend Schinstad
quelle
Ahh, ich denke, Sie haben mich falsch verstanden - ich spreche nicht über die zugrunde liegende physische Maschine. Ich habe meine Frage aktualisiert.
Sergey
Ja, aber trotzdem. Der Computer ist möglicherweise nicht von einem Moment zum anderen gleich, daher ist jeder Durchschnitt nutzlos. In einem Moment kann es 16 CPU-Kerne und 32 GB RAM haben, im anderen 1 Kern und 512 MB RAM. Der Durchschnitt ist möglicherweise extrem schlecht oder besser als theoretisch möglich, je nachdem, wann Sie rechnen. Sie können einige Daten von "ps ax", "top", "iotop" und "uptime" erhalten, aber es wird nicht viel wert sein.
Jo-Erlend Schinstad
2
Ok, ein Beispiel: Ich gzip eine 1-GB-Datei auf meinem Netbook und messe die Zeit, die zur Ausführung der Aufgabe benötigt wird. Dann gzip ich dieselbe Datei auf meinem Desktop - es stellt sich heraus, dass mein Desktop dies dreimal schneller macht als das Netbook, also gebe ich ihnen eine "gzip-Bewertung" von 100 bzw. 300. Dann komprimiere ich dieselbe Datei auf dem VPS und stelle beispielsweise fest, dass sie zum Zeitpunkt des Tests 1,5-mal schneller als das Netbook, aber immer noch 2-mal langsamer als der Desktop ist - es ist also ein "gzip-Faktor" von 150. Ich kann mir vorstellen so etwas selbst, aber sicherlich ist das Messen der Leistung ein häufiges Problem
Sergey
Das Messen der Leistung ist in Ordnung, solange Sie wissen, welchen Computer Sie messen. Mit einem VPS wissen Sie das nicht unbedingt. Es kann ohne Ihr Wissen zwischen vielen völlig unterschiedlichen Computern verschoben werden, Prozessoren können hinzugefügt und entfernt werden, RAM kann hinzugefügt und entfernt werden usw. Oder ein anderer VPS verwendet 25 Sekunden lang viel CPU, wodurch Ihr VPS langsamer wird. Es gibt zu viele Variablen.
Jo-Erlend Schinstad
Klingt so, als gäbe es eine Nische für ein vps-Leistungsüberwachungstool.
Justingrif