В следующем эксперименте в Linux используется
- диск NVMe
- BFQ в качестве планировщика ввода-вывода для NVMe с low_latency = 0 и
- задача, которая заполняет диск запросами ввода-вывода вкратный размеру дискового блока.
В setup1,
у нас есть экземпляр задачи, выполняющейся с приоритетом io в реальном времени (ionice -c1) и записывающей DIRECT на диск.
у нас есть еще один экземпляр вышеупомянутой задачи, работающий с обычным приоритетом (с максимальным усилием) и записывающий DIRECT на диск.
Как и следовало ожидать, мы наблюдаем, что задача, выполняемая с приоритетом в реальном времени, получает около 97% операций ввода-вывода.пропускная способность (столько, сколько она потребляет)
В setup2,
мы выполняем вышеупомянутые задачи без DIRECT (используя кэш страницы).
у нас есть экземпляр выполняющейся задачис приоритетом io в реальном времени (ionice -c1) и записью через кеш страниц на диск.
у нас есть еще один экземпляр вышеупомянутой задачи, работающий с обычным приоритетом (наилучшим образом) и записывающий через кеш страниц на диск.
Сейчасмы видим, что пропускная способность диска распределяется поровну между двумя задачами.
В setup3,
у нас есть экземпляр задачи, выполняющейся с приоритетом io в реальном времени (ionice -c1) и записывающей DIRECT на диск.
у нас есть другой экземплярвышеупомянутой задачи, выполняющейся с обычным (максимальным усилием) приоритетом и записывающей через страницу шанс на диск.
Теперь мы видим, что пропускная способность диска выделяется больше для задачи с низким приоритетом, использующей кэш страницы.
Стоит ли ожидать, что приоритетная задача ввода-вывода в реальном времени получит более высокую пропускную способность в настройках 2 и 3 под планировщиком BFQ IO?
Спасибо.