Direkter Zugriff auf Block-Device langsamer als auf Partition/Datei

F

Fux

Jungspund
Hallo zusammen,

im Zusammenhang mit verschiedenen Performance-Vergleichen verschiedener HDs bzw. RAIDs ist mir aufgefallen, daß der Zugriff direkt auf das Block-Device /dev/sdX (bzw. /dev/mdX) um ein vielfaches langsamer vonstatten geht als jener auf eine Datei in einer Partition auf dem Device.

Schreibt man also bspw. mit dd mehrere GB aus /dev/zero nach /dev/sdX (/dev/mdX), so bekam ich bisher nur mickrige Datenraten im einstelligen MB/s-Bereich.

Tue ich das gleiche mit einer Datei in einer auf /dev/sdX (/dev/mdX) angelegten Partition, so erhalte ich realistische (soll heißen, der HD-Performance entsprechende) Werte.

Da ich dieses Verhalten auf verschiedenen PCs mit verschiedener Hardware und sowohl mit als auch ohne RAID beobachtet habe, nehme ich an, daß es sich um ein generelles Problem (oder Feature?) handelt.

Kann mich evtl. mal jemand aufklären, woher diese Unterschiede kommen?

Danke im Voraus!

Fux
 
es wird halt blockweise direkt (ohne cache) auf die platte geschrieben. das macht es doch etwas langsamer ;).
 
Aha.?

Ich hatte immer angenommen, daß die Optimierung und das Caching aufgabe des VFS bzw. des Gerätetreibers wären.

Mir war bisher nicht bekannt, daß zwischen dem Blockdevice und einer Partition darauf der Cache sitzt.

Mich irritiert auch der enorme Unterschied. Heutige HDs verfügen ja selbst über einige MB Speicher. Sollen die wirklich so langsam sein?


Grüße
Fux

EDIT (13.10. 11:09):

Sicherlich finden im Dateisystem Optimierungen statt.

Aber: Sind deren Einflüsse so groß, daß zwischen dem direkten Schreiben auf's Blockdevice und dem Schreiben in eine Datei ein Unterschied von ca. Faktor 20 besteht?

Oder anders gefragt: Sind die Blockdevices wirklich so "dumm", daß sie nur im einstelligen MB/s-Bereich schreiben können?

Oder noch anders gefragt: Moderne HDs können 60 MByte/s und mehr schreiben. Wenn also der Zugriff auf's Blockdevice an Linux-Caches vorbei direkt auf die HD geht, müßte ich auf diese Weise ja die reelle Datenrate der HD messen. Also die eben erwähnten 60 MB/s und mehr. Ich komme jedoch nur auf untere einstellige MB/s-Werte (was der Performance von HDs des letzten Jahrhunderts entspricht). Warum das?
 
Zuletzt bearbeitet:
Zurück
Oben