Cosmostv file catalog
» » » Планировщики ввода и вывода в Linux
» » » Планировщики ввода и вывода в Linux

    Планировщики ввода и вывода в Linux


    Не слишком углубляясь в дебри ядра, скажем, что с т/з планирования все процессы в Linux подразделяются на:

    • I/O-зависимые
    • CPU-зависимые

    Первые слишком плотно работают с устройствами ввода/вывода, вторым требуется как можно больше процессорного времени.
    По другой, независимой от первой, классификации процессы также могут быть:
    • Интерактивными
    • Фоновыми и пакетными
    • Real-time

    Например, процесс СУБД является фоновым и I/O-зависимым. Поэтому важно понимать, что далее речь пойдет о планировании I/O, а не CPU.

    Итак, существует ровно четыре основных планировщика I/O:
    • CFQ - Completely Fair Queuing - полностью справедливая очередь. Является планировщиком по-умолчанию (по крайней мере в Fedora). Поддерживает очередь ввода/вывода для каждого процесса и пытается распределить доступную полосу пропускания равномерно между всеми запросами. CFQ отлично подходит для многопроцессорных системы выше среднего уровня и для систем, которым требуется сбалансированная производительность подсистемы ввода/вывода между различными устройствами и контроллерами. Если несколько программ одновременно запросят доступ к диску, все программы получат ответ.

    • Deadline - использует алгоритм предельного срока для минимизации задержек ввода/вывода для данного запроса. Этот планировщик предоставляет поведение близкое к реальному времени и использует политику перебора (round robin), пытаясь быть справедливым по отношению к нескольким запросам, для предотвращения “голодания” процессов. Используя пять очередей ввода/вывода, планировщик активно переупорядочивает запросы для улучшения производительности. Другими словами, из очереди извлекается одна программа, которая и получает практически монопольный доступ к диску. Пока эта программа работают, все остальные ожидают в очереди. По истечению определенного времени, планировщик переводит эту программу в состояние ожидания и переключается на другую программу – следующую в очереди. Теперь вторая программа получается доминирующий доступ к диску. Потом третья, четвертая и т.д. Данный метод хорош для сервера баз данных, но не для десктопа.

    • NOOP - представляет собой простую очередь “Первый вошел - Первый вышел” (FIFO) и использует минимальное количество команд CPU на одну операцию ввода/вывода, выполняя простые операций объединения и сортировки. Подразумевается, что производительность системы ввода/вывода оптимизируется на уровне блочного устройства (память-диск) или при помощи интеллектуального HBA или внешнего контроллера. Что снимает нагрузку с процессора и обеспечивает адекватную производительность ввода/вывода для систем с интеллектуальным контроллером ввода/вывода, обладающим собственными возможностями по упорядочиванию запросов.

    • Anticipatory - упреждающий конвейер. Вводит управляемую задержку перед обработкой операции в попытке объединить и/или переупорядочить запросы, улучшая смежность и уменьшая количество операций перемещения по диску. Этот алгоритм предназначен для оптимизации систем с небольшой или медленной дисковой подсистемой. Одним из побочных эффектов этого планировщика может оказаться увеличенная задержка ввода/вывода. Из дизайна планировщика следует, что он лучше всего подойдет для клиентских систем и рабочих станций, для которых интерактивность работы имеет приоритет над задержками ввода/вывода.

    Чтобы узнать какие планировщики ввода/вывода зарегистрированы в системе, введите команду
    [b]$ dmesg | grep schedule[/b]
    io scheduler noop registered
    io scheduler anticipatory registered
    io scheduler deadline registered
    io scheduler cfq registered (default)

    Все четыре конвейера являются встроенными и перекомпиляция ядра не потребуется.

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

    Выбор планировщика ввода/вывода

    Правильный выбор планировщика ввода/вывода состоит в том, чтобы проверить на практике и настроить вашу задачу для каждого из планировщиков, с перезагрузкой системы и выполнением замеров производительности.


    Поэтому не существует единого или правильного ответа на вопрос “какой планировщик ввода/вывода является лучшим”.
    Чтобы выбрать планировщик, отличный от дефолтного добавьте параметр
    elevator=as | deadline | cfq | noop

    в строку kernel конфигурационного файла загрузчика GRUB (/boot/grub/grub.conf) или в строку “append=” для LILO.

    Добавить комментарий
    или Войти VK
    Полужирный Наклонный текст Подчёркнутый текст Зачёркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера

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

Жизнь портала
Случайная статья
Топ-5
Мир

Сбербанк начинает обмен бонусов «Спасибо» на рубли

С 17 октября клиенты Сбербанка впервые получают возможность обменивать накопленные по картам банка бонусы «Спасибо» на рубли, сообщила пресс-служба Центра программ лояльности – оператора программы ...

Ученые обнаружили самый большой организм на Земле

Ученые опровергли мнение, что голубой кит является самым большим животным на планете, обнаружив в США опенка, занимающего площадь в 37 га.

Умер пациент, над которым издевались в магнитогорской больнице

Ранее стало известно, что санитары Магнитогорской психоневрологической больницы №5 записали на видео издевательства над пожилым пациентом.

Планировщики ввода и вывода в Linux


Не слишком углубляясь в дебри ядра, скажем, что с т/з планирования все процессы в Linux подразделяются на:


Первые слишком плотно работают с устройствами ввода/вывода, вторым требуется как можно больше процессорного времени.
По другой, независимой от первой, классификации процессы также могут быть:

Например, процесс СУБД является фоновым и I/O-зависимым. Поэтому важно понимать, что далее речь пойдет о планировании I/O, а не CPU.

Итак, существует ровно четыре основных планировщика I/O:

Чтобы узнать какие планировщики ввода/вывода зарегистрированы в системе, введите команду
[b]$ dmesg | grep schedule[/b]
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)

Все четыре конвейера являются встроенными и перекомпиляция ядра не потребуется.

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

Выбор планировщика ввода/вывода

Правильный выбор планировщика ввода/вывода состоит в том, чтобы проверить на практике и настроить вашу задачу для каждого из планировщиков, с перезагрузкой системы и выполнением замеров производительности.


Поэтому не существует единого или правильного ответа на вопрос “какой планировщик ввода/вывода является лучшим”.
Чтобы выбрать планировщик, отличный от дефолтного добавьте параметр
elevator=as | deadline | cfq | noop

в строку kernel конфигурационного файла загрузчика GRUB (/boot/grub/grub.conf) или в строку “append=” для LILO.

Добавить комментарий
или Войти VK
Полужирный Наклонный текст Подчёркнутый текст Зачёркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера

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