Benchmarking

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Nachdem nun manchmal gefühlte Geschwindigkeiten, möglicherweise verursacht durch Änderungen in der Firmware berichtet wurden, hab ich mal ein einfaches kleines Benchmark-Skript aufgesetzt. Man muss es als 3rd-party installieren (wie die anderen Skripte auch), damit der sys-Apache drauf zugreifen kann.

Hier das Skript:

PHP:
<?php ob_implicit_flush(); ?>
<html><head><title>benchmark</title>
<style>body{font:12px Arial}pre{font-size:11px}</style>
</head><body>
When the time command finishes, time writes a message to standard error giving timing statistics about this program run. 
These statistics consist of<br/> 
(i) the <b>elapsed real time</b> between invocation and termination,<br/> 
(ii) the <b>user CPU time</b> (the sum of the tms_utime and tms_cutime values in a struct tms as returned by times(2)), and<br/> 
(iii) the <b>system CPU time</b> (the sum of the tms_stime and tms_cstime values in a struct tms as returned by times(2)).<br/><br/> 
(1) generate random-numbered file (10MB) in tmpfs (virtual memory / RAM)
<pre><?php passthru('time dd if=/dev/urandom of=/tmp/bench.tmp bs=10M count=1 2>ps.out;tail -3 ps.out;rm ps.out'); ?></pre>
(2) move file to /volume1
<pre><?php passthru('time mv /tmp/bench.tmp /volume1/bench.tmp 2>&1'); ?></pre>
(3) build 100MB file by concatenating random-numbered file
<pre><?php passthru('f=/volume1/bench.tmp;time cat $f $f $f $f $f $f $f $f $f $f >>${f}2 2>ps.out;mv ${f}2 $f;cat ps.out;rm ps.out'); ?></pre>
(4) copy file to lokal disk
<pre><?php passthru('time cp /volume1/bench.tmp /volume1/bench.tmp2 2>&1;rm /volume1/bench.tmp2'); ?></pre>
(5) copy file to USB disk
<pre><?php passthru('time cp /volume1/bench.tmp /volumeUSB1/bench.tmp2 2>&1;rm /volumeUSB1/bench.tmp2'); ?></pre>
(6) copy file to eSATA disk
<pre><?php passthru('time cp /volume1/bench.tmp /volumeSATA/bench.tmp2 2>&1;rm /volumeSATA/bench.tmp2;rm /volume1/bench.tmp'); ?></pre>
== finnish ==<br/><br/>
<div style="cursor:pointer" onclick="window.print()">[print results]</div>
</body></html>

Eventuell müssen kleine Anpassungen im Skript vorgenommen werden (also ob USB1 oder USB2 oder ob überhaupt eSATA).

Wenn man das 2-3 laufen lässt, wird man so die Mittelwerte erhalten, die einigermaßen stabil dann bleiben. Wenn sich nun nach einem Update die Werte wirklich verändern, dann kann das wohl als Indiz für eine Performance-Veränderung herangezogen werden. Damit man sich die Werte nicht abschreiben muss, hab ich den Druck-Klick für das inline-Frame reingesetzt.

itari

Bildchen:
 

Anhänge

  • benchmark.jpg
    benchmark.jpg
    53,3 KB · Aufrufe: 875

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Funktioniert wunderbar (wie bei itari nicht anders zu erwarten)...

Code:
(1) generate random-numbered file (10MB) in tmpfs (virtual memory / RAM) 
real    0m 12.58s
user    0m 0.01s
sys    0m 12.39s
 
(2) move file to /volume1 
real    0m 0.49s
user    0m 0.01s
sys    0m 0.37s
 
(3) build 100MB file by concatenating random-numbered file 
real    0m 6.46s
user    0m 0.05s
sys    0m 3.46s
 
(4) copy file to lokal disk 
real    0m 7.13s
user    0m 0.05s
sys    0m 3.84s
 
(5) copy file to USB disk 
real    0m 5.89s
user    0m 0.07s
sys    0m 4.10s
 
== finish ==
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Vielleicht noch eine kurze Interpretationshilfe:

Punkt 1 sagt was über die Rechengeschwindigkeit des Prozessors aus.

Punkt 2 sagt was über die Kopiergeschwindigkeit aus dem 'virtuellen Memory' (also im günstigsten Fall direkt aus dem RAM, ansonsten aus dem Swap-Space) auf die interne Platte (mit eventueller RAID-Umrechnung)

Punkt 3 sagt was aus über das Platten-Lesen aus dem File-System-Cache, da die kleine Datei, die in Punkt 1/2 entstanden ist, ja 10 x an die große Datei hinten dran kopiert wird. Und wahrscheinlich beim ersten Lesen komplett in den File-System-Cache (das sind die buffers, die man mit dem Kommando free sieht) eingelesen wurde und von da immer wieder heraus gelesen wird. Deswegen ist Punkt 3 auch schneller als Punkt 4, wo die gesamte Datei gelesen (eventuell mit dem Vorteil des Raids) und geschrieben wird.

Punkt 5 und 6 sind selbsterklärend.

Interessant sind in diesem Zusammenhang immer nur die sys-Werte.

itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat