Forum Doku Wiki Blog

Forumsarchiv 2011, Juni
Benchmark: Was sagt er aus?

archivierte Beiträge lesen

  1. (SERVER) Benchmark: Was sagt er aus? von Fix, 23. 06. 2011, 08:54

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 23. 06. 2011, 08:54 Uhr von Fix veröffentlicht.

Hi,

ich habe 2 Server, einen mit Single-Core und einen mit Dual-Core, einer hat 1 GB RAM, einer 4 GB. Ansonsten relativ ähnlich.

Wenn ich nun folgendes Benchmarkscript laufen lasse, bekomme ich folgende Ergebnisse. Aber die langsameren Ergebnisse auf dem "schneleeren" Server, und das reproduzierbar und immer wieder aufs Neue. Teilweise auch etwas gravierender als untenstehend.

Was haltet Ihr davon?

Script:



# http://www.free-webhosts.com/php-hosting-comparison.php
#
*/

$iterations = 12;
if(isset($_SERVER['PHP_SELF'])) $PHP_SELF = $_SERVER['PHP_SELF'];
$starttime = explode(' ', microtime());
$string1 = 'abcdefghij';

for($i = 1; $i <= 20000; $i++)
{
$x=$i * 5;
$x=$x + $x;
$x=$x/10;
$string3 = $string1 . strrev($string1);
$string2 = substr($string1, 9, 1) . substr($string1, 0, 9);
$string1 = $string2;
}

$endtime = explode(' ', microtime());
$total_time = $endtime[0] + $endtime[1] - ($starttime[1] + $starttime[0]);
$total_time = round($total_time * 1000);

###################################################

if(isset($_GET['test'])) $test = $_GET['test'];
$test = (int)$test;
if(empty($test)) $test=0;

if(isset($_GET['ttimes']))
{
        $ttimes = $_GET['ttimes'];
        if($test>0 AND empty($ttimes)) { echo 'error'; die; }
        $itimes = explode('_', $ttimes);
        if(count($itimes)<$test)  { echo 'error 2'; die; }
}

$itimes[$test] = number_format($total_time,0);
$test_results = '';
$ttimes2 = '';
$TimesSum=0;

for($i = 0; $i <= $test; $i++)
{
        $itimes[$i] = (int)$itimes[$i];
        $TimesSum += $itimes[$i];
        $j=$i+1;
        $test_results .=  'Test #' . $j . ' completed in ' . $itimes[$i] . ' ms.<br>';
        $ttimes2 .= $itimes[$i];
        if($i < $test) $ttimes2 .= '_';
}

$test2 = $test+1;
$tquery = 'test=' . $test2 . '&ttimes=' . $ttimes2;
$tquery2 = $tquery . '&stop=1;';
$AverageAll = round($TimesSum/$test2);
$iterations2 = $iterations-1;
sort($itimes);
$lowest = $itimes[0];
$highest = $itimes[$test];
if(isset($_GET['stop'])) $stop = $_GET['stop'];
if(isset($stop)) $test = $iterations;

?>
<html><head>
<?
if($test<$iterations2) echo '<META HTTP-EQUIV="REFRESH" CONTENT="5; URL=' . $PHP_SELF . '?' . $tquery . '">';
?>
<title>Free PHP Benchmark Performance Script from Free-Webhosts.com</title>
<META name="ROBOTS" content="NOINDEX,NOFOLLOW">
<meta content="text/html; charset=windows-1252" http-equiv=content-type>
<meta http-equiv="Content-Style-Type" content="text/css">
</head>

<body>
<h1>Free PHP Benchmark Performance Script</h1>
<p><b><font face=Arial color="#999999" size=4>
<?

echo $test_results;
echo "<br>Lowest time: $lowest ms , Highest time : $highest ms<br>\n";
echo "Average of all $j times: <font size=\"+2\">$AverageAll ms</font><br>\n";
if($test2>2)
{
        $j-=2;
        $AverageMid = round(($TimesSum-$lowest-$highest)/$j);
        echo "Average of middle $j times: <font size=\"+2\">$AverageMid ms</font><br>\n";
}
echo '<br><a href="' . $PHP_SELF . '">Begin again</a>';
if($test<$iterations2) echo ' | <a href="' . $PHP_SELF . '?' . $tquery2 . '">Stop</a> | <font color=red>Doing ' . $iterations . ' iterations. Refreshing in 5 seconds...</font><br>';

?><br><br>
Copyright &copy; 2006 , <a href="http://www.free-webhosts.com/" target="_top"><b>Free Web Hosting</a> (Free-Webhosts.com)<br></font></b>
</BODY></HTML>



Server1:

Test #1 completed in 111 ms.
Test #2 completed in 113 ms.
Test #3 completed in 113 ms.
Test #4 completed in 111 ms.
Test #5 completed in 108 ms.
Test #6 completed in 111 ms.
Test #7 completed in 112 ms.
Test #8 completed in 111 ms.
Test #9 completed in 112 ms.
Test #10 completed in 111 ms.
Test #11 completed in 110 ms.
Test #12 completed in 110 ms.

Lowest time: 108 ms , Highest time : 113 ms
Average of all 12 times: 111 ms
Average of middle 10 times: 111 ms


Server2:

Test #1 completed in 110 ms.
Test #2 completed in 110 ms.
Test #3 completed in 110 ms.
Test #4 completed in 105 ms.
Test #5 completed in 111 ms.
Test #6 completed in 105 ms.
Test #7 completed in 111 ms.
Test #8 completed in 110 ms.
Test #9 completed in 110 ms.
Test #10 completed in 101 ms.
Test #11 completed in 110 ms.
Test #12 completed in 110 ms.

Gruß, Fix

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 23. 06. 2011, 09:11 Uhr von dedlfix veröffentlicht.

Hi!

> ich habe 2 Server, einen mit Single-Core und einen mit Dual-Core, einer hat 1 GB RAM, einer 4 GB. Ansonsten relativ ähnlich.
> Wenn ich nun folgendes Benchmarkscript laufen lasse, bekomme ich folgende Ergebnisse. Aber die langsameren Ergebnisse auf dem "schneleeren" Server, und das reproduzierbar und immer wieder aufs Neue. Teilweise auch etwas gravierender als untenstehend.

Die Taktgeschwindigkeit eines Prozessors sagt sehr wenig über die Ausführungsgeschwindigkeit von Code aus. Die Anzahl der Verarbeituzngsschritte je Takt kann je nach Modell unterschiedlich sein. Sie kann nur dann verglichen werden, wenn die Prozessorfamilie die selbe ist. Für Programme kommt noch hinzu, dass sie ungestört von anderen Tasks arbeiten können und genügend Ressourcen bereitstehen.

> Was haltet Ihr davon?

Nichts, weil es nicht weiter als ein in der Praxis irrelevanter Laborversuch ist. Wann hat man schonmal 20000 Rechen- und Stringoperationen in einem Script und noch dazu mit nicht verwendetem Ergebnis?

> $starttime = explode(' ', microtime());

microtime() hat schon seit langem einen zusätzlichen Parameter bekommen, mit dem die Zeit in günstiger verarbeitbarer Form zurückgegeben wird.


Lo!

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 23. 06. 2011, 10:12 Uhr von Fix veröffentlicht.

Hallo dedlfix,

schön, dass Du mir geantwortet hast.

>
> > Sie kann nur dann verglichen werden, wenn die Prozessorfamilie die selbe ist.

Ja, das ist sie.

> > Was haltet Ihr davon?
>
> Nichts, weil es nicht weiter als ein in der Praxis irrelevanter Laborversuch ist. Wann hat man schonmal 20000 Rechen- und Stringoperationen


Ok. Trotzdem: Ich hatte Webspace, da warens max. 35ms und jetzt mit eigenem Server ca. 105ms und mit leistungsstärkerem Server gar 111ms. Finde ich schon komisch.

Gibt es andere Möglichkeiten, einen Server auf die nötige Performance zu testen?

Gruß, Fix

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 23. 06. 2011, 10:28 Uhr von Vinzenz Mai veröffentlicht.

Hallo,

> Gibt es andere Möglichkeiten, einen Server auf die nötige Performance zu testen?

selbstverständlich. Beispielsweise gibt es ab für apache.


Freundliche Grüße

Vinzenz

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 24. 06. 2011, 10:00 Uhr von Fix veröffentlicht.

> Hallo,
>
> > Gibt es andere Möglichkeiten, einen Server auf die nötige Performance zu testen?
>
> selbstverständlich. Beispielsweise gibt es ab für apache.
>

Hi Vinzenz,

auch an Dich nochmal Danke für den Tip. Habs ausprobiert, siehe weiter oben.

Gruß, Fix

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 23. 06. 2011, 10:35 Uhr von dedlfix veröffentlicht.

Hi!

> > > Was haltet Ihr davon?
> > Nichts, weil es nicht weiter als ein in der Praxis irrelevanter Laborversuch ist. Wann hat man schonmal 20000 Rechen- und Stringoperationen
> Gibt es andere Möglichkeiten, einen Server auf die nötige Performance zu testen?

Was ist denn wichtig bei einem Webserver? Nicht nur, dass er eine einzelne Seite schnell berechnet, sondern vor allem der gesamte Prozess zwischen Anforderung seitens eines Browsers und der fertig angezeigten Seite - und das auch noch wenn mehrere Anwender gleichzeitig was wollen. Da spielt nicht nur die Schnelligkeit des Prozessors sondern auch die Netzwerkanbindung eine Rolle. Und dann gibt es natürlich auch noch Optimierungspotential bei den Ressourcen, die die Seiten so haben wollen (zum Beispiel CSS-Sprites statt Einzelbilder).

Jedenfalls wäre eine einigermaßen relevante Aussage die Anzahl der abgearbeiteten Requests. Tools wie "ab" (oder "ab2" = Apache Benchmark) können Requests in beliebiger Anzahl abfeuern und ermitteln Daten wie Laufzeiten oder die Anzahl Requests pro Zeit.


Lo!

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 24. 06. 2011, 08:38 Uhr von Fix veröffentlicht.

> Jedenfalls wäre eine einigermaßen relevante Aussage die Anzahl der abgearbeiteten Requests. Tools wie "ab" (oder "ab2" = Apache Benchmark) können Requests in beliebiger Anzahl abfeuern und ermitteln Daten wie Laufzeiten oder die Anzahl Requests pro Zeit.
>

Danke. Habe ich mal gemacht. Aber bisher nur für 1 der beiden Server.
Ich werde mal den nächsten hinterhermachen und ggf. hier posten.

Welche Werte sind die relavanten im Ergebnis von ab?

Gruß, Fix

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 24. 06. 2011, 08:52 Uhr von dedlfix veröffentlicht.

Hi!

> Welche Werte sind die relavanten im Ergebnis von ab?

Kann ich dir jetzt nicht sagen, wie die genau heißen, weil ich das lange nicht gemacht habe. Du musst da praxisorientiert an die Sache rangehen. Was passiert denn auf so einem Server in der freien Wildbahn? Er bekommt jede Menge Requests. Ein Benchmark-Wert wäre, wieviel pro Zeiteinheit er schafft. Für den Anwender wäre aber eher interessant, wie lange er warten muss. Das wird umso kritischer, je mehr Requests gleichzeitig laufen.


Lo!

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 24. 06. 2011, 09:27 Uhr von Fix veröffentlicht.

Hi dedlfix,

> Kann ich dir jetzt nicht sagen, wie die genau heißen, weil ich das lange nicht gemacht habe. Du musst da praxisorientiert an die Sache rangehen. Was passiert denn auf so einem Server in der freien Wildbahn? Er bekommt jede Menge Requests. Ein Benchmark-Wert wäre, wieviel pro Zeiteinheit er schafft. Für den Anwender wäre aber eher interessant, wie lange er warten muss. Das wird umso kritischer, je mehr Requests gleichzeitig laufen.
>

Ok. Ich habe jetzt beide verglichen und ein "Hello World" Script 10000 mal bei 10 gleichzeitigen Verbindungen aufgerufen und siehe da, der größere Server schaffts das jedesmal in um die 8 Sekunden, während sein "kleiner Bruder" jedesmal 10 Sekunden braucht.

Das würde ich als Laie nun auch für einen adäquaten Unterschied zwischen den beiden Servervarianten einstufen.

Letztlich gehts mir darum, dass ich nachvollziehen können muß, dass der größere (und teuerere) Server auch tatsächlich der Schnellere sein sollte.

Gruß, Fix

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 23. 06. 2011, 10:54 Uhr von Der Martin veröffentlicht.

Hallo,

> Wenn ich nun folgendes Benchmarkscript laufen lasse, bekomme ich folgende Ergebnisse. Aber die langsameren Ergebnisse auf dem "schneleeren" Server [...]

> Server1:
>
> Test #1 completed in 111 ms.
> Test #2 completed in 113 ms.
> Test #3 completed in 113 ms.
> Test #4 completed in 111 ms.
> Test #5 completed in 108 ms.
> Test #6 completed in 111 ms.
> Test #7 completed in 112 ms.
> Test #8 completed in 111 ms.
> Test #9 completed in 112 ms.
> Test #10 completed in 111 ms.
> Test #11 completed in 110 ms.
> Test #12 completed in 110 ms.
>
> Server2:
>
> Test #1 completed in 110 ms.
> Test #2 completed in 110 ms.
> Test #3 completed in 110 ms.
> Test #4 completed in 105 ms.
> Test #5 completed in 111 ms.
> Test #6 completed in 105 ms.
> Test #7 completed in 111 ms.
> Test #8 completed in 110 ms.
> Test #9 completed in 110 ms.
> Test #10 completed in 101 ms.
> Test #11 completed in 110 ms.
> Test #12 completed in 110 ms.

wo siehst du jetzt die signifikaneten Unterschiede? Die ermittelten Zeiten liegen durchweg um 110ms, das würde ich als "gleich" bezeichnen. Dass die Ergebnisse im Einzelfall immer kleinen Schwankungen unterworfen sind, ist bei einem Multitasking-System ohne garantiertes Echtzeitverhalten völlig normal.

Dass die Ergebnisse so nahezu gleich ausfallen, lässt mich übrigens vermuten, dass die CPUs der beiden Maschinen nahezu die gleiche Leistungsfähigkeit haben. Mehr kann man nicht sagen, weil der Benchmark-Test nur auf interne Rechenoperationen abzielt und weder Netzwerkkommunikation, noch Festplattenzugriffe, noch Speicherzugriffe mit einbezieht, denn der Code ist spätestens nach dem ersten Schleifendurchlauf komplett compiliert im CPU-Cache.
Oder die beiden Server sind virtuelle Maschinen auf der gleichen Hardware mit der gleichen Konfiguration.

Praxisrelevant ist das also nicht, was du hier ermittelst.

Ciao,
 Martin

--
F: Was ist eigentlich aus deinem schlimmen Durchfall geworden?
A: Mein Arzt hat mir Valium verschrieben.
F: Und das hilft?
A: Naja, ich mach mir immer noch in die Hose. Aber inzwischen ist es mir egal.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(

Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 24. 06. 2011, 08:25 Uhr von Fix veröffentlicht.

Hi,

> Dass die Ergebnisse so nahezu gleich ausfallen, lässt mich übrigens vermuten, dass die CPUs der beiden Maschinen nahezu die gleiche Leistungsfähigkeit haben.


Single-Core
Opteron™ 1210 HE
2 x 1,8 GHz
1 GB
2 x 250 GB

zu

Dual-Core
Opteron™ 1214 HE
2 x 2,2 GHz
4 GB
2 x 500 GB

Das sind die beiden Servervarianten und ich hätte Version 2 schon als lesitungsfähigerbezeichnet?

Gruß, Fix



Benchmark: Was sagt er aus?

Der folgende Beitrag wurde am 24. 06. 2011, 10:54 Uhr von Der Martin veröffentlicht.

Moin,

> > Dass die Ergebnisse so nahezu gleich ausfallen, lässt mich übrigens vermuten, dass die CPUs der beiden Maschinen nahezu die gleiche Leistungsfähigkeit haben.

ich hatte bewusst geschrieben: "vermuten"  :-)

> Single-Core
> Opteron™ 1210 HE
> 2 x 1,8 GHz
>
> Dual-Core
> Opteron™ 1214 HE
> 2 x 2,2 GHz
>
> Das sind die beiden Servervarianten und ich hätte Version 2 schon als lesitungsfähigerbezeichnet?

Nach den reinen technischen Spezifikationen, ja. Aber offensichtlich kann der Dual-Core bei deiner spezifischen Aufgabenstellung seinen Vorteil nicht ausspielen. Zumindest den Dual-Core-Vorteil schon mal nicht, denn dein Testcode läuft streng linear ab und hat nichts, was effizient nebenläufig ausgeführt werden könnte. Bleibt die Taktfrequenz - nun ja, gut 20% mehr. Aber das kann der "Kleinere" anscheinend durch andere Vorzüge wettmachen. Vielleicht ist auch die Auslastung beider Maschinen durch andere Prozesse hoch genug, dass "des bissle" kaum noch ins Gewicht fällt.

Nochmal: Bezogen auf die Gesamtanforderungen, die an einen Webserver gestellt werden, ist das Paket 2 sicher höherwertig und leistungsfähiger. Aber deine Testmethode ist nicht geeignet, diesen Unterschied festzustellen.

Ciao,
 Martin

--
Wenn dir jemand eine unschlagbare Abkürzung empfiehlt, gehe einen Umweg.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4