Ich habe einen Dateideskriptor, auf den ich immer zwei Floats schreibe. Beachten Sie, dass ich immer rewind() aufruft, bevor ich etwas in die Datei schreibe, was bedeutet, dass ich immer in die erste Zeile schreibe. Betrachten Sie es als "aktuellen Zustand" in einer Datei. Ich rufe auch fflush() auf, nachdem ich darauf geschrieben habe. Ich hatte Latenzspitzen in meiner Anwendung und als ich überprüfte, fand ich, dass fflush() im Allgemeinen etwa 2-3 Mikrosekunden dauert (ja, ich habe einen bösen schnellen Server), aber zu anderen Zeiten (nach etwa 6-7 "normal schreiben -flush cycles ") Ich sehe, die Zeit ist Tausende von Male (15000+ Mikrosekunden) aufgespießtWarum benötigt fflush() eine variable Zeit, um das gleiche Stück Daten zu löschen?
Können Sie mir sagen, was ich in diesem Szenario überprüfen? Wie behebe ich dieses Problem?
Nun, Sie schreiben auf Speicher irgendeiner Art, möglicherweise (Sie haben nicht gesagt) eine HDD. Die beiden lokalen persistenten Speichermechanismen, die ich mir vorstellen kann (HDDs und SSDs), haben unterschiedliche Antwortzeiten, je nachdem, was sie sonst noch tun müssen. 150000 * Mikro * Sekunden sind immer noch eine * wirklich kurze Zeitspanne *. –
Würden Sie eine Memory-Mapped-Datei verwenden? – Chani
@Wildling * Würden Sie eine Memory-Mapped-Datei verwenden? * Lesen Sie [diesen Beitrag] (http://marc.info/?l=linux-kernel&m=95496636207616&w=2) von Linux Torvalds. 'mmap()' ist ** NICHT ** irgendeine Magie, die alles schneller macht. –