Win vs. Linux

Hello

Im Zuge meiner Diplomarbeit untersuche ich die Performance von UMN-Mapserversystemen mit unterschiedlichsten Einstellungen. Unter anderem verwende ich auch Postgres mit Postgis als Speicherform der räumlichen Daten. Zusätzlich untersuche ich auch die Unterschiede von Windows und Linux diesbezüglich.

Windows 2003 Server
PostgreSql 8.1
Postgis 1.2

Linux Ubuntu Kernel 2.6
PosgreSql 8.1
Postgis 1.1.7

Nun ist folgendes Problem aufgetreten:
Bei den ersten Tests waren die Ergebnisse von Linux in Verbindung mit Postgres um ein drittel langsamer als die Windows variante.
Gefühlsmäßig würd ich mal sagen das kann nicht sein. Gibt’s einfach nicht.
Die Frage wäre nun. Woran kann das liegen?
Kann der Versionsunterschied von Postgis sein?

Zusätzlich noch ein paar Punkte

  • Indizes sind hierbei nicht relevant. Da auch ohne Indizes gleiches Ergebnis eintritt.


  • Die Konfiguration Files beider Datenbanken sind gleich


  • Und die räumlichen Daten in beiden sind Gleich.


  • In allen übrigen Testvarianten in denen die räumlichen Daten wo anders abgelegt werden ist Linux schneller.

Ich bin ratlos und wäre wirklich dankbar für jede Hilfe.
lG Hansi

Zuerst fällt mir dazu das Filesystem ein. Nutzen beide Installationen die gleiche Datenquelle? Ist das ein ntfs-Laufwerk? Wenn ja, dann könnte ich mir vorstellen, das unter Linux die Performance damit einbricht.
Und ich würde auch unter Linux die aktuellere PostGIS-Version nutzen, allein schon um des korrekten Vergleichs willen . AFAIR haben sich da einige Sachen geändert.

Gruß Uwe

Danke erstmals

Nein die beiden Systeme befinden sich auf der selben Maschine auf zwei verschiedenen Partitionen. Windows arbeitet mit ntfs und Linux mit reiserfs. Also das kanns leider auch nicht sein.

Versuche jetzt mal die neue Postgis version raufzuspielen. Kann mir aber auch nicht vorstellen dass dies soeinen Performance unterschied bringt

lG Hansi

Hallo Hansi,

wie wird die Geschwindigkeit denn überhaupt gemessen? Nachdem ein Programm ganz durchgelaufen ist und ein Ergebnis erscheint, oder auch während einzelner Rechenschritte? Vielleicht nimmt der Unterschied ja mit der Zeit zu. Dann wäre noch interessant zu wissen, ob der Unterschied 3 zu 4 Tage oder 3 zu 4 Millisekunden beträgt. Bezieht man unterschiedliche Betriebssysteme mit ein könnte ich mir vorstellen, dass hier dann grundsätzliche betriebssystemspezifische Dinge beachtet werden müssen, die mit PostgreSQL und PostGIS dann gar nichts zu tun haben. Auf das Stichwort Filesystem, was Uwe schon nannte bin ich bei der Frage gestoßen wie viele Tabellen maximal in einer PostgreSQL Datenbank sein dürfen.

Gruß,
Christian

Also für meine Tests hab ich mir quasi ein kleines Netzwerklabor eingerichtet. Also ein Netzwerk mit keinen Einflüssen von Außen. Außerdem sind die Systeme alle frisch installiert, das bedeutet das da nicht irgendein alter Softwareschrott umherhängt.

Allerdings wird die Geschwindigkeit des ganzen Systems gemessen. Vom Zeitpunkt ab dem der Client den http- Request absetzt bis zu dem Zeitpunkt wenn er wieder den http Response bekommt. Mittels PHP-Mapscript wird der UMN Mapserver angesprochen. Der wiederum aus der Postgrs DB die Daten bezieht. In einer anderen Variante bezieht er die Daten aus einem Shape file. In diesem Zusammenhang werden auch eine Fülle weiterer Varianten und Einstellungen gestestet.

Nun mal einige Ergebnisse:

Postgrs als Datenspeicher
Win: 438,101 millsec / Linux: 737,622 millsec
Shape als Datenspeicher
Win: 480,716 millsec / Linux: 239,560 millsec

So Problem ist das Linux wir ich mir das erwartet habe bei allen Tests die Nase vorne hat. Außer eben bei tests bei denen Postgres im Spiel ist.

Die Testdatensätze sind vielleicht etwas klein gewählt.
Der größte Datensatz verbraucht 10MB und besitzt 40.000Vektoren. Also lächerlich.

Die Veränderung der Einstellungen des Shared Buffers und ähnlichem hat nur geringfügige Performance Unterschiede gebracht. Anleitung nach: http://www.varlena.com/GeneralBits/Tidbits/perf.html

Mir ist das schlicht und einfach ein Rätsel
Was soll ich diesbezüglich in meine Diplomarbeit rein schreiben?
Hilfe! :wink:

Lg Hansi

PS: Ein schönes Ostern wünsche ich

Vielleicht sind zu viele Komponenten auf einmal im Spiel, die man vielleicht erst für sich betrachten muss und dann im Zusammenspiel auf verschiedenen Systemen. Gibt es auch Vergleiche von Ausführungszeiten von SQL-Abfragen? Was ja relativ schnell gemacht werden könnte sind Abfragen (irgendwas aufwändigeres mit buffer und/oder transform oder so) unter pgAdmin auf beiden Systemen, die Zeiten werden ja unten jeweils angezeigt. Dann könnte man z.B. die Antwortzeiten eines Requests vergleichen, die man glaube ich in ein Logfile schreiben lassen kann. Dann den Browser mit berücksichtigen, der ein Ergebnis grafisch darstellt und hier auch eine Weile braucht wobei man sich die Zeit mit microtime() ausgeben läßt. Ich denke wichtig ist auf jeden Fall, dass man bei eigenen Ergebnissen immer erläutert was alles vielleicht nicht berücksichtigt wurde oder werden konnte und was letztlich genau getestet wurde. Also wie verläßlich das Ergebnis in Bezug auf die Fragestellung ist. Vielleicht läuft PHP schneller unter Windows, was bedeutet dass dann für das Ergebnis? Ist der Firefox unter Linux schneller?
Das Thema ist so interessant wie kompliziert, denke ich.

Wünsche auch frohe Ostern,
Gruß,
Christian

Morgen!
Ich meinte eigentlich ob sie auf den gleichen Datenbestand zugreifen und ob dieser auf einer ntfs-Partition liegt. Du könntest auch mal auf beiden Sytemen ein explain mir deiner Abfrage ausführenum festzustellen, ob alles generell langsamer ist oder nur eine bestimmte Stelle. Und Reiser würde ich für eine Datenbank-Partition nicht benutzen. Erstens ist es auf das Handling von kleinen Dateien optimiert (dies könnte auch ein Grund für dein Problem sein) und zweites geistert mir immer noch der Begriff ‘Reißwolf-FS’ durch Hirn :wink: . Für Daten-Partitionen nutze ich immer ext3 oder xfs.

Gruß

Uwe