URL: https://linuxfr.org/forums/programmation-c--2/posts/d%C3%A9lai-pendant-lex%C3%A9cution-dun-fwrite Title: Délai pendant l'exécution d'un fwrite Authors: liberforce Date: 2009年12月15日T18:03:47+01:00 Tags: fedora Score: 2 Bonjour, j'ai un programme qui enregistre sur le disque dur des images en provenances de plusieurs caméras. Il tourne en roue libre, le plus vite possible. L'enregistrement se fait via la bibliothèque gdk-pixbuf. Je fais un appel à gdk_pixbuf_save, qui enregistre l'image dans le format que j'ai choisi. J'ai accès au code de gestion de ce format graphique (je l'ai écrit), et l'écriture des données se fait via un unique fwrite (mais sans fflush ensuite, mais il est normalement fait automatiquement quand le fichier est fermé juste après). Problème : souvent, je n'ai plus d'enregistrement pendant près de 0,2 à 0,8 secondes, tandis que d'autres fois je tourne à 29 images/secondes. Le pire c'est que le comportement n'est assez différent d'une exécution à l'autre. Exemple avec ces graphiques représentant en abcisse le numéro d'image et en ordonnée le temps d'enregistrement de l'image en question. `image_perdue` `image_perdue` `image_perdue` `image_perdue` `image_perdue` J'ai d'abord pensé à une lenteur du disque dur, mais en enregistrant sur un ramdisk, même problème. Je n'ai aucun autre processus qui consommerait beaucoup de CPU et pourrait ralentir le bestiau. J'ai tenté d'augmenter la priorité coté processus et E/S avec nice et ionice, sans succès. Et puis En utilisant strace, j'ai pu me rendre compte que mon fwrite est traduit en deux appels à write, et que le "décrochage" survient **toujours** au même endroit : entre ces deux write. Tout ça s'exécute sur une Fedora Core 6 (base de RHEL 5). Quelqu'un aurait une idée d'où ça peut venir ? Un cache quelconque qui coince ? Je suis preneur de toute piste...

AltStyle によって変換されたページ (->オリジナル) /