В репозиторий, развивающий изменения в Btrfs для будущих веток ядра Linux, принят набор патчей с реализацией политики цикличной балансировки операций чтения в RAID1, использующей алгоритм «Round-robin». Для включения распределения операций чтения по круговому циклу в «/sys/fs/btrfs/<uuid>/read_policy» необходимо выставить значение «round-robin:[min_contiguous_read]», в котором необязательный параметр «min_contiguous_read» определяет минимальный размер запросов, подлежащих балансировке между зеркалами (по умолчанию значение 256 KiB).
Изначально балансировка нагрузки RAID1 в Btrfs производилась на основании PID процесса, который запросил ввод/вывод. Подобная схема неплохо работала в системах где нагрузку создаёт множество разных процессов, однако при однозадачной нагрузке не позволяла добиться максимальной производительности. Например, в проведённых тестах включение политики «round-robin» снизило время выполнения процесса дефрагментации с 18 до 8.8 секунд.
Дополнительно добавлено изменение, реализующее параметр «devid:<devid>» в «/sys/fs/btrfs//read_policy». Данный параметр отключает балансировку и предписывает выполнять операции чтения только с заданного диска.
Աղբյուր: opennet.ru
