Полностью справедливая очередь


Completely Fair Queuing ( CFQ ) — планировщик ввода- вывода для ядра Linux, написанный в 2003 году Йенсом Эксбо . [1]

CFQ помещает синхронные запросы, отправленные процессами , в несколько очередей для каждого процесса, а затем выделяет кванты времени для каждой из очередей для доступа к диску . Продолжительность кванта времени и количество запросов, которые может отправить очередь, зависят от приоритета ввода-вывода данного процесса. Асинхронные запросы для всех процессов группируются вместе в меньшем количестве очередей, по одной на приоритет. Хотя CFQ не выполняет явного упреждающегопланирования ввода-вывода, он достигает того же эффекта, что и хорошая совокупная пропускная способность для системы в целом, позволяя очереди процесса бездействовать в конце синхронного ввода-вывода, тем самым «предвидя» дальнейший ввод-вывод из этого процесса. Это можно считать естественным расширением предоставления процессу квантов времени ввода-вывода.

В феврале 2003 года Андреа Арканджели выдвинул свою идею планировщика ввода-вывода Stochastic Fair Queuing I/O Йенсу Эксбо, который затем реализовал ее. Йенс Аксбо усовершенствовал свою первую реализацию, назвав новую версию планировщиком полностью справедливой очереди, и выпустил патч для применения его к ядру серии разработки 2.5.60.

Планировщик ввода-вывода CFQ был впервые интегрирован в основное ядро ​​в качестве дополнительного планировщика ввода-вывода. Можно было сменить планировщик во время загрузки с параметром 'elevator' на ядро.

Red Hat Enterprise Linux 4 использовала этот планировщик ввода-вывода по умолчанию, несмотря на то, что в нем использовалось ядро, основанное на версии 2.6.9. [2]

Второй выпуск планировщика CFQ, получивший название CFQv2, включен в версию 2.6.10, улучшения включают в себя лучшую отзывчивость и устранение некоторых проблем с голоданием, которые присутствовали в более ранней версии. Планировщик теперь также можно переключать во время выполнения, изменяя переменную /sys/block/<block_device>/queue/scheduler в файловой системе sysfs .