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
Мир

В дистанционном обучении увидели неравенство для учеников

Дистанционное обучение увеличивает неравенство между учениками, поскольку дисциплинированные дети продолжают учебу, а те, кто не способен к самообразованию или к работе вне контроля, перестают ...

Греция приняла решение о восстановлении авиасообщения с Россией

Полеты будут возобновлены в случае если оперативный штаб примет положительное решение по данному вопросу, а председатель правительства Михаил Мишустин подпишет распоряжение. При этом, по данным ...

Назван основной показатель для оценки второй волны коронавируса

Осенний рост числа заразившихся коронавирусом нельзя называть "второй волной", добавила она.

Планировщики ввода и вывода в 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
Полужирный Наклонный текст Подчёркнутый текст Зачёркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера

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