Maximaldurchsatz der modifizierten Seagate Dockstar optimieren

Die hier vorgestellen Einstellungen sollen den maximalen Durchsatz bei sequentiellen Lese- und Schreiboperationen bei Netzwerkverbindungen zu Lasten der Speicherverwaltung verbessern. Die Dockingstation FreeAgent DockStar Network Adapter ist ein eingebettetes System, dass mit einem Bootstrap-Skript leicht mit Linux bespielt werden kann und dem Steckdosencomputer SheevaPlug sehr ähnlich ist.

Getestet wurde unter Debian GNU/Linux „lenny“ nach Ausführung des Bootstrap-Skriptes von Jeff Doozan.

Festplatte mit XFS formatieren und dauerhaft einhängen

Es wird nach Installation durch das Bootstrap-Skriptes nur das XFS-Dateisystem benötigt, zu installieren mit apt-get install xfsprogs xfsdump.Falls noch nicht geschehen, zuerst die Festplatte mit XFS formatieren.

mkfs.xfs /dev/sdX

Dann den notwendigen Eintrag in der Datei /etc/fstab mit einem Editor erstellen.

/dev/sdX   /mnt    xfs     noatime,logbufs=8,allocsize=128m        0       2

Die Option allocsize gibt an, wieviel Speicherplatz im Dateisystem bei schreibendem Zugriff vorausschauend reserviert werden soll. Eine Erklärung zu noatime gibt mein Blogartikel, Tip 1

/etc/rc.local.durchsatz anlegen

Mit einem Editor die Datei /etc/rc.local.durchsatz mit folgendem Inhalt anlegen.

blockdev --setra 16384 /dev/sdX  # Setzt den Readahead-Wert auf 16MiB
ifconfig eth0 txqueuelen 5000  # Puffert 5000 zu sendende Pakete im Arbeitsspeicher
echo deadline > /sys/block/sdX/queue/scheduler # Alternativen E/A-Scheduler verwenden

Danach die Datei ausführbar machen.

chmod 700 /etc/rc.local.durchsatz 

Jetzt noch mit einem Editor in der Datei /etc/rc.local vor der Zeile exit 0 das Skript ergänzen. Es ist dort /etc/rc.local.durchsatz einzufügen.

/etc/sysctl.conf ergänzen

Mit einem Editor die Datei /etc/sysctl.conf wie folgt am Ende ergänzen.

# % Anteil des Arbeitsspeichers für E/A-Anfragen, bis Daten sofort auf Festplatte geschrieben werden.
vm.dirty_ratio=8
# % Anteil des Arbeitsspeichers für E/A-Anfragen, bis Daten im Hintergrund auf Festplatte geschrieben werden
vm.dirty_background_ratio=5
# Arbeitsspeicher eher für E/A-Cache als für Anwendungen verwenden, wenn möglich.
vm.vfs_cache_pressure=50
# Auslagern von nicht benutzten Programmen in Swapspeicher, statt E/A-Cache schreiben.
vm.swappiness=100
# Puffert bis zu 5000 empfangene Pakete im Arbeitsspeicher, um Paketverlust zu vermeiden
net.core.netdev_max_backlog=5000
# TCP-Erweiterungen deaktivieren, um Platz im TCP-Header zu sparen.
net.ipv4.tcp_sack=0
net.ipv4.tcp_timestamps=0
# Verbindungen
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_tw_recycle=1

Neue Einstellungen laden

Ohne Neustart die Einstellungen wie folgt aktivieren, oder einen Neustart mittels reboot durchführen.

sysctl -p
/etc/rc.local.durchsatz

Tips für spezielle Softwarepakete

samba:

Setze „socket options = TCP_NODELAY SO_SNDBUF=65536 SO_RCVBUF=65536 SMBwriteraw SMBreadraw“

13 Gedanken zu „Maximaldurchsatz der modifizierten Seagate Dockstar optimieren“

  1. Wenn ich /etc/rc.local.durchsatz ausführe bekomme ich folgende Fehlermeldung. Meine Platte firmiert unter /dev/sdb1

    „etc/rc.local.durchsatz: line 3: /sys/block/sdb1/queue/scheduler: No such file or directory“

    Kannst du mir weiterhelfen?

  2. Hallo,

    den E/A-Scheduler kannst du soweit ich weiß nur für komplette Festplatten ändern. Also versuch es doch einfach mal mit „sdb“, statt „sdb1“.

    Viel Erfolg!

  3. Vielen Dank. Ich habe deinen Beitrag im luxx forum verfolgt und bin dir sehr dankbar für dein Tutorial. Vorher habe ich die Dockstar-Plugbox mit einer Daten NFTS-Partition betrieben aber die CPU-Auslastung war zu hoch. Kannst du mir dein Messverfahren der Protokolle erklären? Ich würde gerne den Test in meiner Netzwerkumgebung wiederholen.

  4. Hallo,

    gerne. Das Testverfahren ist nicht so kompliziert, wie du vielleicht annnimmst. Du brauchst das Paket iozone3 und die zu testenden Dienste. Du hängst das Dateisystem an einem bestimmten Einhängepunkt ein. In diesem Einhängepunkt führst du dann iozone -a -I aus. Dabei wird für aufsteigende Dateigrößen jeweils ein Zugriff auf Teile dieser Datei simuliert. Der Test ist ziemlich umfangreich und dauert je nach Geschwindigkeit in der Größenordnung zehn bis zwanzig Minuten.

    Interessant sind dabei die Maximalwerte der Spalten read und write. Eine genauere Erklärung der Bedeutung der Werte findest du unter folgendem Link.

    http://www.bullopensource.org/ext4/iozone/index.html

    Nach jedem Durchlauf betrachtest du die Werte und wertest sie nach Maximum aus. Auf die entsprechende Dateigröße optimierst du dann as E/A-Subsystem hin.

    Den Netzwerkdurchsatz habe ich einfach mit Dateien der entsprechende Größe aus den Tests mit iozone erzeugt. Das geht z.B. mit dd if=/dev/urandom of=zufallsdatei.raw bs=1M count=700. Diese Datei(en) habe ich dann über das entsprechende Protokoll mehrfach hoch- und heruntergeladen und mir die Werte gemerkt.

    Ist aber auch etwas Erfahrung eingeflossen, wie sich beispielsweise das Netzwerk-Subsystem verhält.

    Viel Erfolg!

    Und über deine Ergebnisse per Mail an die Adresse im Impressum würde ich mich freuen.

    Grüße

  5. Hallo gibt es auch Möglichkeiten den Durchsatz mit NTFS zu erhöhen? Die Platte selbst nutze ich als externen Datenträger auch an anderen Rechnern und möchte sie deshalb ungern Umformatieren. Mit den aktuellen Quellen von NTFS-3g, dürfte ich etwa 1.5MB/s erreichen. Die Platte selbst liefert 30MB/s. Mein Netz WLANg dürfte, 40% (laut Wikipedia) von 54MBit, etwa 2.7MB/s erreichen.
    Im Forum von Jeff Doozan will einer mit der Mount-Option sync, 30MB erreicht haben. Wie zu erwarten war gab es aber bei mir keine Verbesserung, sondern nur eine geringe Verschlechterung. Die Dockstar selber hat einen Workload von rund 5%, an der Auslastung dürfte das Problem also nicht liegen.
    Gibt es ein paar Tricks um noch den 1MB/s raus kitzeln zu können?

    Gruß

  6. Pingback: Anonymous
  7. Hi,

    zuerst vielen Dank für die Tips zum anpassen des Durchsatzes – jedoch bleit eine Frage: Gab es einen speziellen Grund warum Du als Dateisystem xfs gewählt hast?

    Gruß,
    Thom.

  8. Hallo Thom,

    ja es gibt eine Reihe an Gründen, warum ich gerade XFS einsetze. Leider kann ich dir viele davon nicht mit einem Benchmark nachweisen. Es geht mir um hohe Verfügbarkeit und Zuverlässigkeit.

    Konkret kann ich dir den Artikel im MythTV Wiki empfehlen:
    http://www.mythtv.org/wiki/XFS_Filesystem

    XFS ist aus meiner Sicht sicher nicht immer das schnellste Dateisystem, aber das für meinen Anwendungsfall zuverlässigste. Ich komme außerdem mit den vielen Einstellungsmöglichkeiten und Zusatzprogrammen gut klar. Das dürfte aber auch Geschmackssache sein.

    Grüße

  9. Danke für die Durchsatz Tipps, damit konnte ich den Transferspeed meiner Dockstar von ca. 5MB/ auf max 22MB/s bei NFS Transfers heben.
    Vorher war mit ext3 nicht mehr drin, auch wenn ich mich frage warum das bei anderen zu funktionieren scheint.

  10. Ich nutze ein Softwareraid an der Dockstar mit mdadm.
    Ich habe leider häufig Hänger beim Kopieren von Dateien um die 10GB. Nun habe ich gelesen, dass XFS daran schuld sein könnte. Ich teste das nun mit EXT3.

    Hat Jemand ähnliche Erfahrungen gemacht?

  11. Hallo.
    Ich möchte auch XFS mit der Dockstar nutzen. Nachdem ich mehrmals Fehler hatte, habe ich dieses Tut probiert, aber XFS macht immer noch Ärger.
    Nach einem Reboot mountet er nicht die XFS-Partition. Ein manuelles „mount -all“ bewirkt:

    root@dockstar:~# 2010 Dec 23 19:32:48 dockstar [ 2375.018245] Filesystem „sdc“: XFS internal error xlog_clear_stale_blocks(2) at line 1294 of file /build/buildd-linux-2.6_2.6.32-23-armel-m0YG60/linux-2.6-2.6.32/debian/build/source_armel_none/fs/xfs/xfs_log_recover.c. Caller 0xbf16da9c
    2010 Dec 23 19:32:48 dockstar [ 2375.018262]

    Ich nutze das debian squeeze von Jeff Doohan. Macht der Kernel Probleme?

    Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.