Ich schreibe eine kleine Anwendung, die JPEG-Bilder mit einer konstanten Rate auf einer SD-Karte schreibt. Ich wählte ein EXT3-Dateisystem, aber das gleiche Verhalten wurde mit einem EXT2-Dateisystem beobachtet.SD-Karte schreiben Leistung
Mein Schreiben Schleife sieht wie folgt aus:
get_image()
fwrite()
fsync()
Oder wie folgt aus:
get_image()
fopen()
fwrite()
fsync()
fclose()
ich auch einige Timing-Statistiken angezeigt werden, und ich kann mein Programm sehen manchmal mehrere Sekunden lang blockiert. Die durchschnittliche Rate ist immer noch gut, denn wenn ich die eingehenden Bilder in einem Fifo halte, dann werde ich viele Bilder in einem kurzen Zeitraum nach einem solchen Stand schreiben. Weißt du, ob es ein Problem mit dem Betriebssystem ist oder ob es mit der SD-Karte selbst zusammenhängt? Wie könnte ich näher an Echtzeit heranrücken? Ich brauche keine starke Echtzeit, aber für einige Sekunden blockiert zu sein, ist nicht akzeptabel.
Einige Präzision: Ja, es ist notwendig, nach jeder Datei Fsync, weil ich das Bild möchte auf der Festplatte sein, nicht in einem Benutzer oder Kernel-Puffer. Ohne FSyncing, habe ich viel besser, aber immer noch inakzeptabel Stall. Ich glaube nicht, dass es sich um ein Pufferproblem handelt, da die erste Blockade auftritt, nachdem 50 MB geschrieben wurden. Und gemäß der man-Seite ist fsync genau hier, um sicherzustellen, dass keine Daten gepuffert sind.
Genauigkeit in Bezug auf die durchschnittliche Schreibrate: Ich schreibe mit einer Rate, die durch die Karte, die ich verwende, nachhaltig ist. Wenn ich ein eingehendes Bild anhake, während ich darauf warte, dass ein fsync abgeschlossen wird, dann wird nach dieser Blockierung die Schreibübertragungsrate zunehmen und ich werde schnell wieder zur Durchschnittsrate zurückkehren. Die durchschnittliche Übertragungsrate beträgt etwa 1,4 MB/s.
Die systeme ist ein modernes Laptop Ubuntu 8.04 mit Lager kee (2.6.24.19)
pleaes beachten JFFS und dergleichen sind nicht eine gute Idee für einige Flash-Geräte, wie Compactflash, die ihre eigenen Wear Leveling tun. – Hasturkun
Sind sie eine schlechte Idee, oder nutzt der CompactFlash-Wear-Leveling nur die Vorteile von JFFS? Es ist eine ehrliche Frage, ich habe keine Ahnung. Ich stimme zu, dass es sicherlich eine bessere Wahl für "rohe" Flash-Geräte ist. –