I/O Schedulers Планировщики

Большинство производителей телефонов держат планировщик ввода-вывода вашего телефона заблокированным, поэтому пользователи не могут изменять какие-либо значения, которые могут изменить производительность вашего телефона. Однако, как только ваш телефон рутован, вы можете изменить эти значения, что позволит повысить производительность ваших телефонов и даже немного увеличить время автономной работы. Вот подробное руководство по всем общим планировщикам ввода-вывода.

  1. CFQ
  2. Deadline
  3. VR
  4. Noop
  5. BFQ
  6. FIOPS (Fair IOPS)
  7. SIO (Simple I/O)
  8. ROW
  9. ZEN
  10. SIOplus
  11. FIFO (First in First Out)
  12. Tripndroid
  13. Test
  14. Maple

I/O Scheduler Descriptions Описание планировщиков (машинный перевод)

CFQ:

Полностью справедливый планировщик очередей поддерживает масштабируемую очередь ввода-вывода для каждого процесса и пытается равномерно распределить доступную пропускную способность ввода-вывода между всеми запросами ввода-вывода. Каждая очередь на процесс содержит синхронные запросы от процессов. Временной срез, выделенный для каждой очереди, зависит от приоритета родительского процесса. V2 CFQ имеет некоторые исправления, которые решают голодание ввода-вывода процесса и некоторые небольшие обратные запросы в надежде улучшить отзывчивость.

Преимущества:

  • Вообще выполняет самое лучшее в тестах объема
  • Очень стабильный, это планировщик ввода-вывода ядра Linux по умолчанию для многих настольных компьютеров и мобильных устройств
  • Выполняет хорошо на закручивая хранении и даже на полупроводниковом хранении для смешанных рабочих нагрузок
  • Как правило, рассматривается как хорошо сбалансированный
  • Процессы, требующие больше ресурсов ввода-вывода, могут быть приоритетнее (например, индексирование, обслуживание системы)

Недостатки:

  • Задержка ввода-вывода может быть несколько плохой
  • Есть некоторые накладные расходы планирования, хотя, вероятно, не слишком заметные в тестах и реальном использовании

Итог: один из лучших универсальных планировщиков ввода-вывода. CFQ лучше подходит для традиционных жестких дисков, однако он может дать лучшую пропускную способность в некоторых ситуациях.

Deadline:

Цель планировщика Deadline - попытаться гарантировать время начала обслуживания для запроса. Он делает это, устанавливая Deadline для всех операций ввода-вывода, чтобы предотвратить голодание запросов. Он также поддерживает две очереди Deadline, в дополнение к сортированным очередям (как для чтения, так и для записи). Очереди Deadline в основном сортируются по их крайнему сроку (время истечения срока действия), в то время как сортированные очереди сортируются по номеру сектора.

Перед подачей следующего запроса планировщик Deadline решает, какую очередь использовать. Очереди чтения имеют более высокий приоритет, поскольку процессы обычно блокируют операции чтения. Затем планировщик Deadline проверяет, истек ли срок действия первого запроса в очереди крайнего срока. В противном случае планировщик обслуживает пакет запросов из отсортированной очереди. В обоих случаях планировщик также обслуживает пакет запросов, следующих за выбранным запросом в отсортированной очереди.

Преимущества:

  • Превосходит в уменьшении задержки любого данного одиночного ввода-вывода
  • Может работать лучше, чем CFQ в определенных рабочих нагрузках
  • Хорошо работает в (большинстве) тестов
  • Вообще низкие накладные расходы планирования
  • Очень стабильный, по умолчанию в последних версиях ядра Linux

Недостатки:

  • Меньшая пропускная способность ввода-вывода, чем CFQ
  • Нет возможности приоритизировать связанные с вводом-выводом процессы по сравнению с другими


Итог: хороший всесторонний планировщик. Если вы хотите хорошую производительность,вы должны попробовать крайний срок.

ROW:

Планировщик ввода-вывода ROW был разработан с учетом потребностей мобильных устройств. В мобильных устройствах мы предпочитаем пользовательский опыт всему остальному, поэтому мы хотим дать read I/O requests как можно больше приоритета. В мобильных устройствах у нас будет не так много параллельных потоков, как на настольных компьютерах. Обычно это один поток или не более 2 одновременных рабочих потоков для чтения и записи. Предпочтение запросов чтения над записями значительно уменьшает задержку чтения. Основная идея политики планирования ROW заключается в следующем:если в трубе есть запросы на чтение-отправьте их, но не слишком голодайте запросы на запись.

Преимущества:

  • Низкая задержка чтения, лучше для быстрого реагирования и переключения задач
  • Вообще стабилизированный, был принят в много ядер

Недостатки:

  • Potentially higher write latency, reducing write performance

Итог: это хороший всесторонний планировщик, несмотря на то, что он смещен для чтения операций. Ваше устройство может чувствовать себя более отзывчивым после выбора ROW, потому что он был разработан для мобильных устройств. Старые устройства могут видеть больше повышения производительности по сравнению с новыми устройствами.

SIO (Simple I/O):

Simple I/O стремится сохранить минимальные накладные расходы для достижения низкой задержки для обслуживания запросов ввода-вывода. Нет понятий очереди приоритетов, но только основное слияние. SIO-это смесь между Noop и deadline. Нет переупорядочивания или сортировки запросов.

Преимущества:

  • Как правило, низкая задержка ввода-вывода, лучше для отзывчивости
  • Очень стабильно

Недостатки:

  • Плохо работает в бенчмарках

Итог: один из популярных планировщиков, это хороший всесторонний планировщик. Люди, которые хотят повысить производительность, должны избегать этого.

Noop:

Вставляет все входящие запросы ввода-вывода в очередь First In First Out и реализует слияние запросов. Лучше всего использовать с устройствами хранения, которые не зависят от механического движения для доступа к данным (да, как наши флэш-накопители). Преимущество здесь в том, что флэш-накопители не требуют переупорядочивания нескольких запросов ввода-вывода в отличие от обычных жестких дисков.

Преимущества:

  • Низкая задержка ввода-вывода, лучшая отзывчивость
  • Очень низкие накладные расходы планирования
  • Очень стабильный, используется по умолчанию для некоторых систем с твердотельными накопителями


Недостатки:

  • Плохо работает в бенчмарках

Итог: современные смартфоны теперь используют noop в качестве планировщика по умолчанию из-за того, что он довольно хорошо работает с флеш-накопителем. Однако старые устройства могут испытывать более низкую производительность при выборе. Если вам нужен очень простой алгоритм планировщика ввода-вывода (из-за времени автономной работы или задержки), вы можете выбрать его.

VR:

В отличие от другого программного обеспечения планирования, синхронные и асинхронные запросы не обрабатываются отдельно, но это наложит справедливый и сбалансированный в пределах этого крайнего срока запрос, что следующий запрос, который будет обслужен, является функцией расстояния от последнего запроса.

Преимущества:

  • Как правило, выделяется в случайных пишет.


Недостатки:

  • Иногда неустойчив и ненадежен


Итог: не лучший планировщик для выбора. Вы, вероятно, обнаружите, что другие планировщики работают лучше, будучи более стабильными.

BFQ:

Вместо временных срезов по CFQ, значения присваивает бюджетов. Диск предоставляется активному процессу до истечения его бюджета (количества секторов). BFQ назначает высокие бюджеты для задач, не связанных с чтением. Бюджет, назначенный процессу, изменяется с течением времени в зависимости от его поведения.

Преимущества:

  • Хорошая пропускная способность ввода-вывода, иногда соответствующая CFQ в производительности
  • Лучше время ожидания ввода/вывода, чем CFQ, лучше отзывчивость
  • Хорошо сбалансированный, даже больше, чем CFQ
  • В целом стабильный, по умолчанию в некоторых пользовательских ядрах и дистрибутивах Linux

Недостатки:

  • Выполняет плохо в тестах, иногда намного хуже в некоторых областях


Итог: есть лучшие планировщики, которые будут работать лучше, чем BFQ. Это довольно сложный планировщик, который лучше подходит для традиционных жестких дисков.

ZEN:

ZEN основан на планировщиках ввода-вывода Noop, Deadline и SIO. Это алгоритм на основе FCFS (First come, first serve), но это не строго FIFO. ZEN не делает никакой сортировки. Он использует крайние сроки для справедливости и обрабатывает синхронные запросы с приоритетом над асинхронными. Кроме того, это почти то же самое, что и Noop, смешанный с функциями VR.

Преимущества:

  • Превосходит в задержке ввода-вывода, хорошо для отзывчивости
  • Очень стабильно
  • Как правило, рассматривается как хорошо сбалансированный

Недостатки:

  • Есть некоторые накладные расходы планирования, но меньше, чем CFQ

Итог: это в значительной степени лучшая версия VR, работает довольно хорошо и стабильна. В целом это хороший выбор для большинства смартфонов.

SIOplus:

На основе оригинального планировщика SIO с улучшениями. Функциональность для указания голодания асинхронных чтений против синхронных чтений; голодал счетчик запросов на запись только тогда, когда на самом деле есть запросы на запись в очереди

Преимущества:

  • Лучше задержка ввода-вывода, чем SIO в определенных рабочих нагрузках

Недостатки:

  • По-прежнему выполняет примерно то же самое, что и SIO в тестах

Итог: Если вам понравился SIO, Вам понравится SIOplus. Он работает немного лучше в некоторых сценариях использования, но искатели производительности должны искать в другом месте.

FIOPS (Fair IOPS):

Этот новый планировщик ввода-вывода разработан вокруг следующих предположений о флэш-накопителях: нет времени поиска ввода-вывода, стоимость чтения и записи ввода-вывода обычно отличается от вращающихся носителей, время выполнения запроса зависит от размера запроса, а также высокий сквозной ввод и более высокие IOPS с низкой задержкой. Планировщик ввода-вывода FIOPS (Fair IOPS) пытается исправить пробелы в CFQ. Он основан на IOPS, поэтому он нацелен только на диск без поиска ввода-вывода. Это очень похоже на CFQ, но решение об отправке принимается в соответствии с IOPS вместо slice.

Преимущества:

  • Как правило, имеет хорошую задержку ввода-вывода, хорошо работает в некоторых тестах
  • Как и CFQ, имеет некоторые накладные расходы по планированию


Недостатки:

  • В некоторых конфигурациях люди могут испытывать проблемы с заиканием при повседневном использовании устройства
  • Не самый стабильный планировщик


Итог: большинство людей, которые используют FIOPS, получат заметное улучшение производительности. Тем не менее, вы можете получить проблемы с прокруткой и общие лаги.

FIFO (First in First Out):

Первый в первом из планировщика. Как следует из названия, он реализует простой метод приоритета, основанный на обработке запросов по мере их поступления.

Преимущества:

  • Низкая задержка ввода-вывода, лучшая отзывчивость
  • Очень низкие накладные расходы планирования
  • Очень стабильный, используется по умолчанию для некоторых систем с твердотельными накопителями

Недостатки:

  • Плохо работает в бенчмарках

Итог: как Noop, но менее распространен. Если вам нужен очень простой алгоритм планировщика ввода-вывода (из-за времени автономной работы или задержки), вы можете выбрать его.

Tripndroid:

Новый планировщик ввода-вывода на основе Noop, deadline и vr и должен иметь минимальные накладные расходы. Сделано TripNRaVeR

Преимущества:

  • Выделяется в задержке ввода-вывода, хорошо для отзывчивости, иногда лучше с некоторой настройкой
  • Должен быть стабилен, однако не принят широко
  • Как правило, рассматривается как хорошо сбалансированный

Недостатки:

  • Есть некоторые накладные расходы планирования, но меньше, чем CFQ

Итог: Трипндроид не очень распространен. Есть и другие планировщики, которые вы можете выбрать, которые могут выполнять аналогичные или лучше. Однако это хороший всесторонний планировщик.

Test:

Тестовый планировщик ввода-вывода является дубликатом планировщика Noop с добавлением тестовой утилиты. Он позволяет тестировать блочное устройство путем отправки определенных запросов в соответствии с тестовым случаем и объявлять PASS/FAIL в соответствии с кодом ошибки завершения запросов.

Преимущества:

  • То же, что и Noop, но может быть полезным для разработчиков ядра

Недостатки:

  • То же, что и Noop

Итог: на самом деле не должен использоваться никем. Вы должны использовать Noop вместо этого.

Maple:

Maple основан на планировщиках ввода-вывода Zen и Simple. Он использует алгоритм стиля zen first-come-first-serve с отдельными запросами чтения / записи и улучшенной обработкой прежних/последних запросов от SIO. Maple смещена в сторону обработки асинхронных запросов, прежде чем синхронно, и читать просит, прежде чем писать. Хотя это может иметь негативные последствия для интенсивных задач записи, таких как копирование файлов, это немного улучшает отзывчивость пользовательского интерфейса. Когда устройство находится в спящем режиме, maple увеличивает время истечения срока действия запросов, чтобы он мог обрабатывать их медленнее, вызывая меньше накладных расходов.

Преимущества:

  • Well rounded
  • Предназначен для мобильных устройств в виду
  • Лучшая задержка ввода-вывода, чем ZE7N в определенных рабочих нагрузках

Недостатки:

  • Может быть нестабильным на некоторых устройствах

Итог: это все еще очень новый планировщик ввода-вывода, который должен работать немного лучше, чем ZEN. Он будет продолжать улучшаться с дальнейшим развитием.

Anxiety:

Anxiety не разделяет асинхронные и синхронные запросы, потому что асинхронные редко встречаются. Он отдает приоритет чтению над записью, как и Maple, но имеет тенденцию голодать, пишет больше (это настраивается). Он основан на noop с базовым алгоритмом first-in-first-out, в то время как Maple основан на deadline с отслеживанием времени истечения срока действия. Это делает Anxiety лучше на батарее, чем Maple, а также быстро. Он определяет приоритет задержки над пропускной способностью, что означает, что запросы выполняются быстрее, но передача данных медленнее.

Преимущества:

  • Предназначен для мобильных устройств в виду
  • Возможно, больше экономии батареи по сравнению с Maple

Недостатки:

  • Скорость передачи данных и записи может быть ниже

Recommended IO schedulers Рекомендации по использованию:

В общем и целом:
- CFQ
- BFQ
- FIOPS
- Deadline

Обоснование: для общей производительности данные показали, что некоторая форма планирования, такая как CFQ или BFQ, полезна не только для механических приводов, но и для твердотельных носителей информации. Эти планировщики обычно настроены так, чтобы понимать различия между устройствами хранения, и поэтому, например, не будут рассматривать внутреннюю память как традиционный вращающийся жесткий диск(основанный на поиске). В смартфонах мы делаем много параллельных многозадачных операций ввода-вывода, и, следовательно, планировщики, которые имеют некоторую логику, чтобы навязать справедливость, помогут в этой ситуации

Для лучшей производительности:
- FIOPS
- BFQ
- CFQ
- Deadline

Обоснование: результаты показали, что планировщики, такие как CFQ (те, которые налагают некоторую форму справедливости), достигают отличной пропускной способности, но стоимость увеличения накладных расходов планирования и задержки. На современных смартфонах дополнительные накладные расходы и задержки не должны оказывать существенного влияния на быстродействие системы, поскольку мы имеем дело с гораздо более мощными процессорами, чем в прошлом. Синтетические тесты не должны быть решающим фактором планировщика

Для наименьших расходов:
- Noop
- FIFO
- Deadline

Обоснование: если единственное, что вы цените, - это более низкие накладные расходы на обработку ввода-вывода,ваш лучший выбор-крайний срок. Почему? Noop был рекомендован в некоторых руководствах, найденных в интернете для твердотельных носителей, однако известны случаи, когда Noop вызывал проблемы в некоторых конкретных рабочих нагрузках

Информация

I/O Schedulers Планировщики

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.