In das Repository, das Änderungen an Btrfs für zukünftige Kernzweige von Linux entwickelt, wurde ein Satz von Patches zur Implementierung einer zyklischen Balancierungsrichtlinie für Lesevorgänge in RAID1 aufgenommen, die den "Round-robin"-Algorithmus verwendet. Um die Verteilung der Leseoperationen im Rundlauf in "\/sys\/fs\/btrfs\/\/read_policy" zu aktivieren, muss der Wert "round-robin:[min_contiguous_read]" gesetzt werden, wobei der optionale Parameter "min_contiguous_read" die minimale Größe der Anfragen definiert, die zwischen den Spiegeln ausgeglichen werden soll (Standardwert von 256 KiB).
Ursprünglich wurde die Lastverteilung in RAID1 in Btrfs basierend auf der PID des Prozesses durchgeführt, der die Ein-/Ausgabe angefordert hat. Dieses Schema funktionierte gut in Systemen, in denen viele verschiedene Prozesse die Last erzeugten, erlaubte jedoch bei einprozessualer Last nicht, die maximale Leistung zu erreichen. Beispielsweise reduzierte die Aktivierung der Richtlinie "round-robin" die Ausführungszeit des Defragmentierungsprozesses von 18 auf 8,8 Sekunden in durchgeführten Tests.
Zusätzlich wurde eine Änderung hinzugefügt, die den Parameter "devid:" in "\/sys\/fs\/btrfs\/read_policy" implementiert. Dieser Parameter deaktiviert die Balancierung und weist an, Leseoperationen ausschließlich von der angegebenen Festplatte durchzuführen.
Quelle: opennet.ru
