syncs und I/O bound

Stellen wir uns ein Programm vor, dass unzählig viele Datensätze in Form von kleinen Dateien auf die Festplatte Befördern soll.

Zunächst mal was passiert während eines syncs auf die Festplatte. Die Datei und alle Buffer werden auf die Festplatte geschrieben, zudem wird das journal berechnet und ebenfalls gewartet bis es auf der Festplatte angekommen ist. Erst dann kann mit wieder mit weiten Operationen fort geführt werden.

Möchte man diese vom Programm gewählten Einstellungen umgehen ohne in das Programm selbst einzugreifen, hat man nur noch die Möglichkeit im Dateisystem Einstellungen vorzunehmen. Bei meinen Test hatte ich ein Programm das knapp 1200 kleine Dateien mittels sync auf die Festplatte bekam. Durch die Option barrier=0 schaffte das Programm 5500 – 6200 Operationen, also Faktor 5.

mount -o remount, barrier=0 /

Hierbei wird das Fielsystem regemountet und syncs werden nur nicht mehr beachtet.

Selbstverständlich ist hierbei abzuwägen wie wahrscheinlich ein Absturz des Rechners während eines Schreibvorganges ist.