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 Kommentare

tristan 18. September 2010 Antworten

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?

josen 19. September 2010 Antworten

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!

tristan 19. September 2010 Antworten

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.

josen 19. September 2010 Antworten

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

Stefan 1. Oktober 2010 Antworten

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ß

Pingback: Anonymous
thom 19. Oktober 2010 Antworten

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.

josen 19. Oktober 2010 Antworten

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

darkside40 19. Oktober 2010 Antworten

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.

oxygen8 26. Oktober 2010 Antworten

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?

jcc 23. Dezember 2010 Antworten

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.