Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Описание [ править ]

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

История [ править ]

До интеграции [ править ]

В феврале 2003 года Андреа Арканджели предложил Йенсу Аксбоу идею стохастического планировщика ввода-вывода с справедливой очередью, который затем реализовал ее. Йенс Аксбоэ внес улучшения в первую реализацию hufllzD.is, назвав новую версию планировщиком Completely Fair Queuing, и выпустил патч, чтобы применить его к ядру серии разработки 2.5.60.

Ядро 2.6.6 (10 мая 2004 г.) [ править ]

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

Ядро 2.6.9 (19 октября 2004 г.) [ править ]

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

Ядро 2.6.10 (24 декабря 2004 г.) [ править ]

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

Ядро 2.6.13 (27 июня 2005 г.) [ править ]

Планировщик CFQ перешел на новый дизайн с временным разделением, получивший название CFQv3. Среди прочего, он реализует ioprio_get (2) и ioprio_set (2), которые позволяют пользователю устанавливать приоритеты ввода-вывода для каждого процесса, обычно с помощью команды ionice (1) (хотя использование nice (1) также несколько изменяет приоритеты ввода-вывода)

Ядро 2.6.18 (20 сентября 2006 г.) [ править ]

CFQ стал планировщиком по умолчанию, заменив упреждающий планировщик . [4]

Ядро 5.0 (03.03.2019) [ править ]

CFQ был удален. [5] [6]

См. Также [ править ]

  • Планировщик Noop
  • Планировщик крайнего срока
  • Предварительное планирование

Ссылки [ править ]

  1. ^ «Исходный код планировщика ввода-вывода (содержит информацию об авторских правах в заголовке)» . Проверено 28 декабря 2017 года . CS1 maint: обескураженный параметр ( ссылка )
  2. Бесси Палос (октябрь 2014 г.). «Явное упреждающее планирование ввода / вывода - пример из практики» . Проверено 13 августа 2015 года . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ D. Джон Shakshober (июнь 2005). «Выбор планировщика ввода-вывода для Red Hat® Enterprise Linux® 4 и ядра 2.6» . Журнал Red Hat . Архивировано из оригинального 27 августа 2007 года . Проверено 20 ноября 2011 года . CS1 maint: обескураженный параметр ( ссылка )
  4. ^ Йенс Аксбо (июнь 2006). «Ядро Linux 2.6.18 - Сделайте CFQ планировщиком ввода-вывода по умолчанию» . Проверено 20 марта 2016 года . CS1 maint: обескураженный параметр ( ссылка )
  5. ^ Йенс Аксбо (2018-10-12). «блок: удалить устаревшие планировщики ввода-вывода» . Проверено 25 октября 2020 . CS1 maint: обескураженный параметр ( ссылка )
  6. ^ Линус Торвальдс (2018-12-28). «Тег слияния 'for-4.21 / block-20181221' из git.kernel.dk/linux-block» . Проверено 25 октября 2020 . CS1 maint: обескураженный параметр ( ссылка )

Источники [ править ]

  • Краткая информация о CFQ (заархивировано отсюда )
  • Выходит в версии 2.6.10

Внешние ссылки [ править ]

  • Документация CFQ из исходного кода Linux
  • CFQ - Руководство по настройке из базы знаний RedHat