Рио Цюрюта (Ryo Tsuruta) реализовал новый дисковый драйвер блочных устройств - т.н. Block I/O Bandwidth Controller. Принцип работы его можно пояснить на таком простом примере: пусть у вас имеются диск с 2-мя разделами, и вы хотите, чтобы процессор разрулил приоритет обслуживания между ними в соотношении допустим 4:1. Делается это примерно так: ручками содаем в каталоге /dev 2 устройства - band1 и band2 - и прикуручиваем их соответственно к /dev/sda1 и /dev/sda2. Далее выполняем команды:
- # echo "0 `blockdev --getsize /dev/sda1` band /dev/sda1 1" | dmsetup create band1
- # echo "0 `blockdev --getsize /dev/sda2` band /dev/sda2 1" | dmsetup create band2
- # dmsetup message band1 0 weight 40
- # dmsetup message band2 0 weight 10
Каждый раз, когда несколько задач работают с одним дисковым устройством, между ними возникает коллизия доступа. Например, пусть есть 2 одновременно выполняемых задачи: поисковый индексатор и итоговый подсчет, при этом вторая задача должна выполняться максимально быстро. Данный контролер может разрулить данную проблему, назначая им различный приоритет. Или, например, на сервере приоритет может быть отдан базе данных по отношению к чистке лог-файлов. Еще раз убеждаемся в том, что возможности базовых линуксовых настроек безграничны.
>>> Подробности