• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Probelem mit lseek

sarpedon

Newbie
Hallo NG

Ich schreibe gerade an ein eigenem Filesystem und habe dabei ein geschwindigkeitsproblem.

Ich öffne mit fopen das Partition device und schreibe mit write bzw. lese mit read sektorenweise ein.
Um den lesekopf zu positionieren verwende ich llseek.
Wenn ich die Festplatte nicht gemauntet habe erreiche ich bei sequentielen lesen nur 60 MB/s. Sobald ich aber die Festplatte mount erreich ich den realen Wert von 130 MB /s.

Nun meine Frage. Liegt das am lseek?
Wenn ja warum und wie kann man das umgehen?

lg
Mario Jungwirth
 
Das hier ist doch keine Newsgroup (NG) ;-)
sarpedon schrieb:
Ich öffne mit fopen das Partition device und schreibe mit write bzw. lese mit read sektorenweise ein.
Entweder { fopen, fread, fwrite, fseek } ODER { open, read, write, lseek }. llseek ist der kernel-interne Name.
Um den lesekopf zu positionieren verwende ich llseek.
Wenn du sequentiell was liest, brauchst du doch nicht immer lseek aufzurufen.

Wenn du ein Filesystem schreibst, solltest du im FS-Code ohnehin bread nehmen, und nicht irgendwelchen murks mit sys_open, file_open oder ähnlichem.
 
OP
S

sarpedon

Newbie
Falles es jemanden interessiert ich habe die Lösung für mein Problem

Also man sollte (wenn man direkt auf die Platte zugreift) mit einem RAW-Device arbeiten da hierbei dann kein caching erfolgt!

Wie jengelh richtig schreibst sollte man read, write, lseek64 verwenden. Jedoch (laut Oracel und Sybase) sollte man schon ein RAW-Device verwenden (wenn man sein eigenen caching macht).

Ich habe nun ein elevater seeking gemacht (5MB lesen dann xx MB überspringen 5MB lesen usw). Hierbei erhalte ich nun einen Tollen wert von 124 MB/s wenn Seq. von Sector 1 - last sector gelesen wird (ca. 280GB).

Auch noch zu sagen ist das ich hierbei ein RAID 0 mit 2x 146 GB 10000 SCSI Festplatten verwendet habe.

Sollte jemand einen Sourcecode bzw hilfe brauche, denn kann ich nun helfen :)

Danke nochmal an jengelh!!

lg
Mario Jungwirth
 
Oben