Ich arbeite an einem Stück wissenschaftlicher Software, die sehr CPU-intensiv ist (ihre Proc gebunden), aber es muss Daten ziemlich oft auf Festplatte schreiben (i/o gebunden).Effiziente Möglichkeit, Daten auf dem Datenträger zu speichern, während eine rechenintensive Aufgabe ausgeführt wird
Ich bin Parallelisierung zu diesem hinzufügen (OpenMP) und ich frage mich, was der beste Weg, um die Write-to-Disk-Bedürfnisse zu adressieren. Es gibt keinen Grund, warum die Simulation auf der Festplatte warten sollte (was sie gerade macht).
Ich bin auf der Suche nach einer "Best Practice" dafür, und Geschwindigkeit ist das, was mir am wichtigsten ist (das können sehr lange Simulationen sein).
Dank ~ Alex
Erste Gedanken:
einen separaten Prozess mit tun, um die eigentliche Schreiben auf die Festplatte, so dass die Simulation zwei Prozesse hat: eine CPU-bound (Simulation) und ist IO-bound (Datei schreiben). Das klingt kompliziert.
Möglicherweise ein Rohr/Puffer? Ich bin etwas neu bei diesen, also könnte das eine mögliche Lösung sein.
Ich denke die 1-Wege-Leitung ist der Weg, den ich dann gehen werde. Ich glaube nicht, dass ich auf das Problem stoßen werde, zu sehr zu blockieren; Da nicht viele Daten generiert werden, wollte ich nur die Threads trennen. Wenn ich so viele Daten generieren würde, würde ich überdenken, wie viel tatsächlich aufbewahrt werden muss. – machinaut