Возможно вы искали: 'Chili Con Carnage'

May 15 2025 23:46:58
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96161170
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18360
• Обзор The Walking ... 18804
• Обзор DMC: Devil M... 19880
• Обзор на игру Valk... 15878
• Обзор на игру Stars! 17765
• Обзор на Far Cry 3 17950
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17510
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16620
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14723
• Превью Firefall 13481
• Превью Dead Space 3 16335
• Превью о игре SimC... 14732
• Превью к игре Fuse 15443
• Превью Red Orche... 15542
• Превью Gothic 3 16347
• Превью Black & W... 17355
Главная » Статьи » Разное » Планировщики ввода/вывода в Linux (io scheduler priority linux kernel)

Планировщики ввода/вывода в Linux (io scheduler priority linux kernel)

Ключевые слова: io, scheduler, priority, linux, kernel, (найти похожие документы)

From: Yuri Trofimov <sysadmin.online@gmail.com.>
Date: Mon, 09 Feb 2009 17:02:14 +0000 (UTC)
Subject: Планировщики ввода/вывода в Linux

Оригинал: http://sysadminonline.ru/linux-io-schedulers/
Оригинал на английском: http://www.devshed.com/c/a/BrainDump/Linux-IO-Schedulers/

Планировщики ввода/вывода и производительность

Разрыв между показателями производительности дисков и остальных частей системы достаточно
большой и все время растет. Самое узкое место в производительности диска представляет собой
процесс перемещения головок чтения/записи из одной части диска в другую, эта операция
называется "установка головок" (seek). В мире, где многие операции измеряются несколькими
циклами процессора (каждый из которых может занять почти треть наносекунды), одна операция
установки головок диска может занять в среднем более восьми миллисекунд - это немного,
конечно, но это в 25 миллионов раз больше, чем один такт процессора!

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


Адресация диска

Для того чтобы понять роль планировщиков ввода/вывода, необходима некоторая справочная
информация. Жесткие диски адресуют свои данные, используя знакомую геометрию на основе
адресации цилиндров (cylinders), головок (heads) и секторов (sectors),- или CHS адресации.
Жесткий магнитный накопитель состоит из нескольких пластин, каждая из которых состоит из
одного диска, шпинделя и головки чтения/записи. Каждая пластина делится на круговые
кольцевые дорожки. Каждая дорожка затем делится на целое число секторов. Чтобы найти
конкретный блок данных на диске, логика привода требует трех частей информации: значения
цилиндра, головки и сектора.

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

Современные операционные системы могут адресовать жесткие диски используя номера блоков -
процесс, известный как логическая адресация блоков (LBA) и далее жесткий диск внутри себя
транслирует номер блока в правильный CHS адрес.

Примечание. Хотя нет гарантий, что отображение номер-блока в CHS-координаты будет линейным.
Физически блок N обычно находится рядом с блоком N+1. Это последовательность отображения
имеет важное значение как мы скоро увидим.

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


Жизнь планировщиков ввода/вывода

Планировщики ввода/вывода выполняют две основные операции: слияние и сортировка. Слияние
представляет собой процесс принятия двух или нескольких смежных запросов ввода/вывода и
объединения их в один запрос.

Рассмотрим два запроса, один для чтения с диска блока номер 5 и другого запроса на чтение
блоков с 6 по 7. Эти запросы могут быть объединены в один запрос на чтение блоков с 5 по 7.
Общий объем ввода/вывода может быть тот же самый, но количество операций ввода/вывода
сокращается вдвое.

Сортировка, более важная из этих двух операций,- это процесс упорядочивания запросов
ввода/вывода в восходящем порядке номеров блоков. Например, если есть операции ввода/вывода
с блоками номер 52, 109, и 7, то планировщик ввода/вывода будет сортировать эти запросы в
порядке 7, 52 и 109. Если запрос был выдан на блок 81, он будет вставлен между запросами на
блоки 52 и 109. Планировщик ввода/вывода направит запросы к диску в том порядке, в котором
они стоят в очереди: 7, затем 52, затем 81, и, наконец, 109.

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


Helping Out Reads

Каждый запрос на чтение должен возвращать актуальные данные. Таким образом, если
запрашиваемые данные не в кэше страниц, процесс чтения должен быть блокирован до тех пор,
пока эти данные не будут считаны с диска - а это потенциально длительная операция.

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

Это резко контрастирует с запросами на запись, которые (по умолчанию, в
несинхронизированном состоянии) заблаговременно не инициируют ввод/вывод. Таким образом, с
точки зрения user-space приложения, поток пишущих запросов не расходует производительность
диска. Это потоковое поведение лишь усугубляет проблему для чтения: пишущий поток требует
ресурсов ядра и диска. Этот феномен известен как проблема writes-starving-reads.

Если I/O scheduler всегда сортирует вставку новых запросов, то возможно что запросы на
далекие блоки будут "голодать" неопределенно долго. Рассмотрим наш предыдущий пример. Если
новые запросы беспрерывно поступают к блокам, скажем, 50-х номеров, запрос на блок 109
никогда не будет обслужен (имеется в виду, до тех пор, пока предыдущие запросы не будут
обслужены. Прим.пер.). Поскольку время ожидания по чтению имеет решающее значение, то от
такого поведения будет в значительной степени страдать производительность системы. Таким
образом, планировщики ввода/вывода должны использовать механизм для предотвращения голода.

Простой подход, например, принят в I/O scheduler в ядре Linux 2.4,- Linus Elevator -
заключается в том, чтобы просто остановить вставки-сортировки, если в очереди есть
достаточно старый запрос. Проблема заключается в том, что этот эвристический алгоритм
является слишком упрощенным. Признавая это, в ядре Linux Kernel 2.6 Linus Elevator был
убран и добавлено несколько новых планировщиков ввода/вывода.


Deadline I/O Scheduler

Deadline I/O Scheduler хранит отсортированную (как описано выше, прим.пер.) очередь, и
вводит две дополнительные очереди: FIFO очередь на чтение и FIFO очередь на запись. Записи
в каждой из этих очередей отсортированы по времени поступления (фактически, первый вошел -
первый вышел). Каждому запросу в очереди FIFO назначено время окончания. Для очереди
запросов чтения - это 500 миллисекунд. Для очереди запросов записи - это пять секунд. При
поступлении нового I/O запроса, он вставляется-сортируется в стандартную очередь и
помещается в конец соответствующей (на чтение или запись) FIFO очереди.

Как правило, к жесткому диску посылаются запросы ввода/вывода с головы стандартной
отсортированной очереди. Это максимизирует общую пропускную способность при минимизации
операций поиска и установки головок на диске, так как нормальная очередь сортируется по
номеру блока (как и с Linus Elevator).
Когда у записи вначале списка одной из дополнительных FIFO очередей истечет назначенное
время, I/O scheduler останавливает обработку I/O запросов из стандартной очереди, и
начинает обслуживание запросов из этой FIFO очереди. I/O scheduler проверяет и обрабатывает
запросы только с головы очереди, где находятся старейшие запросы.

Таким образом, Deadline I/O Scheduler поддерживает эффективную общую пропускную способность
без голодания какого-либо одного запроса недопустимо длительное время. Проблема
writes-starving-reads сводится к минимуму.


Anticipatory (упреждающий) I/O Scheduler

Проблема предыдущих планировщиков ввода/вывода вновь вытекает из зависимости: каждый новый
запрос на чтение выдается только тогда, когда предыдущий будет возвращен, но к тому
времени, когда приложение получает прочитанные данные и посылает следующий запрос на
чтение, I/O планировщик уже начал обслуживание других запросов. В этом случае планировщик
ввода/вывода в течении некоторого времени мог бы подождать поступление следующего запроса
на чтение. Именно так и работает Anticipatory I/O Scheduler. Он основан на Deadline I/O
Scheduler с добавлением механизма ожидания, до шести миллисекунд, следующего чтения. Если
6-ть миллисекунд истекли, но запроса на чтение не поступило, планировщик возвращается к
работе, которую выполнял до этого (например, обслуживание стандартной отсортированной
очереди).


Complete Fair Queuing (CFQ) I/O Scheduler

CFQ планировщик использует другой подход для достижения тех же целей. В CFQ каждому
процессу присваивается собственная очередь, и каждой очереди присваивается квант времени
(timeslice). Планировщик ввода/вывода по кругу обходит каждую очередь и обслуживает запросы
из очереди до тех пор, пока не будет исчерпан лимит времени (timeslice) или не останется
запросов в этой очереди. В последнем случае CFQ планировщик будет ждать, по умолчанию
10-мс, нового запроса из очереди. Если ожидание было напрасным, то планировщик переходит к
следующей очереди.

В рамках каждой очереди процесса, синхронизированные запросы (как, например, читающие)
имеют приоритет над несинхронизированными запросами. Таким образом, CFQ способствует чтению
и предотвращает проблему writes-starving-reads.

CFQ планировщик хорошо подходит для большинства задач, что делает его прекрасным первым
выбором.


Noop I/O Scheduler

NOOP планировщик является самым базовым из доступных планировщиков. Он не выполняет каких
сортировок, только основные слияния. Он используется для специализированных устройств,
которые не требуют сортировки их запросов.
962 Прочтений •  [Планировщики ввода/вывода в Linux (io scheduler priority linux kernel)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Планировщики ввода/вывода в Linux (... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка