J'écris une petite application qui écrit des images jpeg à vitesse constante sur une carte SD. Je choisis un système de fichiers EXT3, mais le même comportement a été observé avec un système de fichiers EXT2.Performance d'écriture sur carte SD
Ma boucle d'écriture ressemble à ceci:
get_image()
fwrite()
fsync()
Ou comme ceci:
get_image()
fopen()
fwrite()
fsync()
fclose()
J'affiche également des statistiques de synchronisation, et je peux voir mon programme est parfois bloqué pendant plusieurs secondes. Le taux moyen est toujours bon, car si je garde les images entrantes dans un fifo, alors je vais écrire beaucoup d'images dans un court laps de temps après un tel décrochage. Savez-vous si c'est un problème avec le système d'exploitation ou s'il est lié à la carte SD elle-même? Comment pourrais-je me rapprocher du temps réel? Je n'ai pas besoin de temps fort, mais être bloqué pendant plusieurs secondes n'est pas acceptable.
Une certaine précision: Oui, il est nécessaire de fsync après chaque fichier, car je veux que l'image soit sur le disque, pas dans un tampon utilisateur ou kernel. Sans fsyncing, j'ai un meilleur rendement, mais toujours un décrochage inacceptable. Je ne pense pas que ce soit un problème de tampon, puisque le premier décrochage se produit après que 50 Mo ont été écrits. Et selon la page de manuel, fsync est ici précisément pour s'assurer qu'il n'y a pas de données tamponnées.
Précision concernant le taux d'écriture moyen: J'écris à un taux qui est durable avec la carte que j'utilise. Si j'empile l'image entrante en attendant la fin d'un fsync, après ce décrochage, le taux de transfert d'écriture augmentera et je reviendrai rapidement au taux moyen. Le taux de transfert moyen est d'environ 1,4 Mo/s.
Le systeme est un ordinateur portable moderne en cours d'exécution ubuntu 8.04 avec un stock Kee (2.6.24.19)
pleaes noter JFFS et similaires ne sont pas une bonne idée pour certains périphériques flash, tels que CompactFlash, qui font leur propre nivellement d'usure. – Hasturkun
Est-ce une mauvaise idée ou est-ce que le nivellement d'usure CompactFlash annule les avantages de JFFS? C'est une question honnête, je n'en ai aucune idée. Je suis d'accord que c'est certainement un meilleur choix pour les appareils flash «bruts». –