2012-04-02 14 views
2

Vor einiger Zeit stellte ich eine Frage über die Kosten eines Systemaufrufs in Solaris 10 auf SPARC-Hardware. In den letzten paar Monaten ist dieses Problem ein paar Mal wieder aufgetaucht und hier ist, was ich gefunden habe.Syscall Overhead in Solaris vs Linux

Wenn wir einen synthetischen Test durchführen, bei dem eine 300-MB-Datei in 256-Byte-Blöcken von der Festplatte gelesen wird, dauert sie unter Solaris 10 wesentlich länger als unter Linux. Der Test wird in der folgenden Art und Weise geschehen:

dd if=test.dat of=/dev/null bs=256

Auch test.dat wenn auf einem Memory-Mapped-Dateisystem wie /tmp gespeichert, Linux Solaris trifft mit großem Vorsprung. Es scheint so, als ob der Aufwand, zwischen User Space und Kernel Space hin und her zu gehen, unter Solaris wesentlich höher ist als unter Linux, selbst wenn beide auf derselben Hardware laufen.

Ich habe zwei Fragen:

  1. Ist es eine Art von Know Nachteil von Solaris über Linux?
  2. Gibt es eine Möglichkeit, Solaris auf Linux-Nummern abzustimmen, vorausgesetzt, ich kann die Größe eines I/O-Blocks nicht von 256 erhöhen?

Vielen Dank!

+1

Es gibt eine Menge nicht näher spezifizierter Variablen hier. Ist das auf vergleichbarer Hardware? Die gleichen Festplatten? Die gleichen Dateisysteme? Wenn Sie eine Frage zum Systemanruf-Overhead beantworten möchten, sollten Sie einen anderen Systemaufruf verwenden, der keine andere Arbeit verrichtet. – alberge

+0

@alberge Die beste "vergleichbare Hardware", die ich bekommen kann, sind zwei Instanzen eines VirtualBox-Rechners, der auf einem Windows7-Host läuft. Ich weiß, dass dieser Aufbau flockig sein könnte, aber in Reihen von Experimenten bleiben die Zahlen innerhalb vernünftiger Dispersion. Im Test mit "/ tmp" sind beide Dateisysteme identisch - tmpfs. Ich habe auch den Test verbessert, indem ich ibs und obs getrennt spezifiziert und obs bei 8192 gehalten habe. – evolvah

+0

Die Dateisysteme sind nur "identisch", weil sie denselben Namen haben.Die tmpfs-Implementierungen teilen nichts gemeinsam zwischen Linux und Solaris. Versuchen Sie, etwas zu finden, das den Systemaufruf-Overhead misst und nicht die komplexe Kombination, die Sie gerade verwenden. Sie sollten auch die Spezifikationen beider Systeme angeben und herausfinden, welchen Engpass sie während des Tests erfüllen. – jlliagre

Antwort

1

Sie sollten mehr Informationen in Ihre Frage aufnehmen. Meiner Meinung nach ist Ihr Problem Dateisystem, es geht nicht um das Betriebssystem. Mit XFS können Dateisysteme mit Blockgrößen zwischen 512 Byte und 64 Kilobyte erstellt werden, wodurch das Dateisystem auf die erwartete Verwendung abgestimmt werden kann. Unter Solaris ist das Standard-Dateisystem xfs, daher ist die Blockgröße von 256 Byte kein guter Parameter. Könnten Sie es bitte auf 512 erhöhen, um zu sehen, was passiert?

+1

Solaris Standard-Dateisysteme sind entweder ufs (S10 und älter) oder ZFS (S11). Für/tmp ist der Standardwert tmpfs. Auf Solaris gibt es keine xfs-Unterstützung. – jlliagre

2

Ich nehme an, Sie haben dies zu einem wahren Äpfel-zu-Apfel-Vergleich gemacht, bei dem die Solaris- und LINUX-Boxen in Leistung/Kapazität identisch sind? Wie auch immer, einige der wichtigsten Fragen, die Sie durch diese helfen:

1) Wenn Sie den Befehl ausführen vmstat 1 während dieses dd ausgeführt wird, welche Arten von Zahlen erhalten Sie auf der Solaris 10-Box gegenüber dem LINUX Box?

2) Wie lange dauert diese Operation? Ich sehe kaum 2 Sekunden auf meinem PC Solaris 10 x86 laufen, das zu tun ...

3) Versuchen Sie einen vollständig qualifizierten Pfad für Ihre wenn Parameter verwendet (dh if =/tmp/test.dat vs if = test.dat) nur um doppelt sicherzustellen, dass Sie von/tmp ablaufen.

Sean.

+0

Um die verstrichene Zeit auf einen besser beobachtbaren Wert zu erhöhen, können Sie lediglich die Größe der Eingabedatei erhöhen. Auf meiner Hardware wird eine Datei von 300 MB in ungefähr 4-5 Sekunden verbraucht. Ich werde vmstat später ausführen, wenn ich zum Testsystem komme. In der Zwischenzeit habe ich bei der Prstat-Ausgabe unter Solaris keine nennenswerte Wartezeit auf E/A festgestellt. Die Summe von USR und SYS liegt nahe bei 100%. Und der SCL-Wert liegt über 0,2 M pro 1 Sekunde Probe. – evolvah