Задача: • Понять, как работает планировщик блочного io • Создать метапланировщик, чтобы пользователь смог бы сам на



Скачать 16.57 Kb.
Pdf просмотр
Дата21.11.2016
Размер16.57 Kb.
Просмотров127
Скачиваний0
ТипЗадача

Linux Block IO Scheduler
Студент: Оля Тележная
Руководитель: Кирилл Кринкин

Дано:

Открытые исходники ядра

Подмножество языка С

Несколько физических жестких дисков

Большое желание разобраться

Задача:

Понять, как работает планировщик блочного IO

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

Зачем?

Датацентр!

Куча пользовательских дисков, один – служебный

Конечно, администратору не хочется ждать

Хотелось добавить принципиально новый уровень приоритетов на уровне физических устройств (альтернатива существующим приоритетам на уровне процессов)

Введение в область

Главный среди планировщиков – Linus Elevator
(абстрактный класс? Да не, мы же на С пишем)

Его подчиненные - cfq, noop, deadline, ..., olya J

HDD диск внутри себя имеет головку, которая читает и пишет

Основная задача лифта – перевезти побольше народу за раз и не кататься по этажам впустую

В ядре все то же самое!

Введение в область

Введение в область

Что сделали

Добавили свой планировщик – olya-iosched

Добавили сбор статистики (несколько разных идей)

Статистика пока что только для N дисков

Научились при необходимости приостанавливать работу с текущим диском

Возникшие проблемы

Не было опыта разработки в ядре

Нет человеческого дебаггера

Нет стандартной библиотеки

Нет готовых ответов на Stackoverflow

Нет даже файловой системы (иногда)

После написания кода нужно пересобрать ядро, перезапустить систему и верить, что она запустится

Плюсы работы с ядром

Гора отличных книг, написанных простым языком

Код хорошо документирован и проверен десятками тысяч программистов

Много людей, готовых помочь

Нерешенные вопросы

Как именно собирать статистику? Как часто сбрасывать счетчик?
Почему?

Прогоняя с обработки - отправляем спать. Насколько? Почему именно так? Можно ли обойтись без сна?

Как будет выглядеть меню для пользователя?

Поддержка переменного количества дисков
Весной буду продолжать работу над проектом.

Чему я учусь в процессе

Писать нормальный код с первого раза

Читать книги

Читать на английском

Задавать вопросы и получать ответы

Спасибо за внимание!
https://github.com/OSLL/linux https://github.com/telezhnaya


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал