Планувальники введення-виведення

Проста відправка запитів на пристрій введення-виведення в тому ж порядку, в якому ці запити направляє ядро, призводить до дуже поганий продуктивності Одна з найбільш повільних операцій, які взагалі можуть бути в компютері, – це пошук по жорсткому диску Операція пошуку – це позиціонування головки жорсткого диска на певний блок, яке може запять багато мілісекунд Мінімізація кількості операцій пошуку надзвичайно критична для продуктивності всієї системи

Тому ядро ​​не відправляє всі запити на виконання операцій блочного введення-виведення жорсткого диску в тому ж порядку, в якому вони були отримані, або відразу ж, як тільки вони були отримані Замість цього, воно виконує так звані операції злиття (обєднання, merging) і сортування (sorting), які дозволяють значно збільшити продуктивність всієї системи2 Підсистема ядра, яка виконує ці операції називається планувальником вводу-виводу (J / 0 scheduler)

Планувальник вводу-виводу розділяє дискові ресурси між які очікували в черзі запитами впода-виводу Це виконується шляхом обєднання і сортування запитів вводу-виводу, які перебувають у черзі Планувальник вводу-виводу не потрібно плутати з планувальником виконання процесів (див главу 4, Планування виконання процесів), який ділить ресурси процесора між процесами системи Ці дві підсистеми схожі, але це-не одне і те ж Як планувальник виконання процесів, так і планувальник вводу-виводу виконують віртуалізацію ресурсів для декількох обєктів У разі планувальника процесів виконується віртуалізація процесора, який спільно використовується процесами системи Це забезпечує ілюзію того, що процеси виконуються одночасно, і є основою багатозадачних операційних систем з поділом часу, таких як Unix З іншого боку, планувальники введення-виведення виконують віртуалізацію блокових пристроїв для чекають виконання запитів блочного введення-виведення Це робиться для мінімізації кількості операцій пошуку по жорсткому диску і для отримання оптимальної продуктивності дискових операцій

Завдання планувальника введення-виведення

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

2 Це необхідний про підкреслять ь особливо Системи, що не мають е таки х функци й або в яких х ці функції погано реалізовані, матимуть дуже ь погану продуктивність навіть при невеликому Кількість операцій ї блочного введення-виведення

виконують дві основні завдання: обєднання і сортування Обєднання – це злиття декількох запитів в один Як приклад розглянемо запит, який поставлений в чергу кодом файлової системи, наприклад щоб прочитати порцію даних з файлу (звичайно, на даному етапі все вже виконується на рівні секторів і блоків, а не на рівні файлів) Якщо в черзі вже є запит на читання з сусіднього сектора диска (наприклад, іншу ділянку того ж файлу), то два запити можуть бути обєднані в один запит для роботи з одним або декількома, розташованими поруч, секторами диска Шляхом злиття запитів планувальник вводу-виводу уменьятает витрати ресурсів, повязані з обробкою декількох запитів, до рівня необхідного на обробку одного запиту Найбільш важливо тут те, що диск виконує всього одну команду і обслуговування декількох запитів може бути виконано взагалі без застосування пошуку Отже, злиття запитів зменшує накладні витрати і мінімізує кількість операцій пошуку

Тепер припустимо, що наш запит на читання міститься в чергу запитів, але там немає інших запитів на читання сусідніх секторів Тому немає можливості виконати обєднання цього запиту з іншими запитами, які перебувають у черзі Можна просто помістити запит в кінець черги Але що якщо в черзі є запити до сусіднім секторам диска Чи не краще буде помістити новий запит в чергу десь поруч із запитами до фізично близько розташованим секторам диска Насправді планувальники введення-виведення саме так і роблять, Вся черга запитів підтримується в відсортованому стані по секторах, щоб послідовність запитів у черзі (наскільки це можливо) відповідала лінійному руху по секторах жорсткого диска Мета полягає в тому, щоб не тільки зменшити кількість переміщень в кожному індивідуальному випадку, але й мінімізувати загальну кількість операцій пошуку таким чином, щоб головка рухалася по прямій лінії Це аналогічно алгоритму, який використовується в ліфті (elevator) – ліфт не стрибає між поверхами Замість цього він плавно намагається рухатися в одному напрямку Коли ліфт доходить до останнього поверху в одному напрямку, він починає рухатися в інший бік Через такої аналогії планувальник вводу-виводу (а іноді тільки алгоритм сортування) називають ліфтовим планувальником (алгоритмом ліфта, elevator)

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*