Какие алгоритмы планирования используются в 15.04? Можно ли это изменить?

12

Хотелось бы знать, какие механизмы планирования используются в 15.04, с разделением времени или в режиме реального времени, я уверен, что это FIFO, Round Robin, SJF?

PS: новичок в Linux

leslie_lyj
источник

Ответы:

14

Планировщик процессов

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

Начиная с ядра 2.6.23 (это было бы с Hardy 8.04 LTS), полностью честный планировщик (CFS), основанный на « крайнем сроке ротационной лестницы». Обзор от kernel.org :

CFS расшифровывается как «Совершенно честный планировщик» и является новым «настольным» планировщиком процессов, реализованным Ingo Molnar и объединенным в Linux 2.6.23. Это замена для кода интерактивности SCHED_OTHER предыдущего ванильного планировщика.

80% дизайна CFS можно обобщить в одном предложении: CFS в основном моделирует «идеальный, точный многозадачный процессор» на реальном оборудовании.

«Идеальный многозадачный ЦП» - это (несуществующий :-)) ЦП, обладающий 100% физической мощностью и способный параллельно выполнять каждую задачу с точно равной скоростью, каждый со скоростью 1 / nr_running. Например: если запущено 2 задачи, каждая из них выполняется с физической нагрузкой 50% - т.е. фактически параллельно.

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


  • Ядро 2.4: O (n) планировщик ; с этим ядром нет версии Ubuntu.
  • Ядро 2.6.0 до 2.6.22: O (1) планировщик . Бородавка 4.10 (1-й выпуск) используется 2.6.8. Gutsy 7.10 был последним, который использовал 2.6.22 или ниже.

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

Планирование ввода / вывода - это метод, который операционная система использует для определения порядка операций ввода-вывода блока блоков, которые будут отправлены в тома хранения.

Статья Phoronix о планировании : Linux 3.16: Планировщик ввода-вывода дедлайна обычно лидирует с SSD.


Вы можете изменить планировщик ввода / вывода, добавив параметр "elevator =" в "GRUB_CMDLINE_LINUX_DEFAULT =" в grub.

Вероятно, проще (при условии sda и крайнего срока) сделать это так:

  • Чтобы показать список доступных планировщиков:

    cat /sys/block/sda/queue/scheduler
    
  • И чтобы изменить планировщик (можно сделать на лету):

    echo deadline > /sys/block/sda/queue/scheduler
    

Из ядра / git / torvalds / linux.git


Вы можете проверить, что используется с (принимая sda как primairy):

cat /sys/block/sda/queue/scheduler
Rinzwind
источник
Означает ли это, что механизм планирования, используемый в Ubuntu 15.04 по умолчанию, является алгоритмом разделения времени, CFS? Или это с другими, RR и FIFO? Я получил свою информацию здесь: manpages.ubuntu.com/manpages/hardy/man2/…
leslie_lyj
Вы смотрите на страницы для Харди. Это немного устарело;) «cfq» - это значение по умолчанию. Смотрите добавленную ссылку на kernel / git / torvalds / linux.git.
Ринзвинд,
1
... разве это не сбивает с толку между диском и планировщиком процессора ? Это совершенно разные звери. Планировщик ЦП решает, какой процесс будет запущен следующим, а планировщик дисков - как будет осуществляться доступ к блокам данных на дисках. См., Например, wiki.archlinux.org/index.php/Maximizing_performance
Rmano
Ну, не совсем, главное в этом вопросе было выяснить, на каком механизме планирования процессов работает Ubuntu 15.04. (Извините, если я не был ясен)
leslie_lyj
2
@Rmano Я предполагал, что это для информации, а не для фактического использования. Но невротик во мне изо всех сил>: - D Любой, кто хочет играть с этим, должен быть экспертом: X
Rinzwind