The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Переработанный справедливый планировщик задач для Linux ядра

19.04.2007 13:25

Ingo Molnar объявил о выходе релиза набора патчей с реализацией подсистемы модульных планировщиков задач (Modular Scheduler Core) и модуля-планировщика с полностью справедливым распределением ресурсов (Completely Fair Scheduler - CFS).

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

В планировщике задач CFS вместо очередей процессов ожидающих выполнения, используется дерево rbtree, определяющее план с временем перехода к выполнению очередного процесса. Единица планирования времени в CFS фиксирована - наносекунда, и не привязана к частоте генерации прерываний таймера (HZ).

CFS планировщик поддерживает два режима работы: 'desktop' (low latencies) и 'server' (good batching).

  1. Главная ссылка к новости (http://kerneltrap.org/node/805...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/10531-linux
Ключевые слова: linux, kernel, scheduler
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, pavlinux (??), 21:51, 19/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
      Секунда есть время, равное 9192631770 периодам излучения, соответствующего
    переходу между двумя сверхтонкими уровнями основного состояния атома цезия 133.
      Если он, Ingo, подключит такой таймер к Линуху, тогда одна наносекунда
    будет, и то с погрешностью, равна 9 таким переходам.
      А пока таймеры в компах, работают на кварце с собственной частотой где-то около
    24 с х..ем, где-то 12 с х...ем мегагерц. т.е. 24 мильёна в секунду. И потом делится на участки по 1024, т.е. отрабатывается среднее, и из 24000000 делаются 1024 выборки они то и равны секунде в компе.

    Как он собрается ловить нано секунду???  

     
     
  • 2.3, Eugeni (??), 01:21, 20/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    1.0 nanoseconds (1.0 ns) – cycle time for frequency 1 GHz, radio wavelength 0.3 m

    http://en.wikipedia.org/wiki/Nanosecond

    Наносекунды разные бывают :).

     
  • 2.13, www.andr.ru (?), 19:49, 21/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    > 24 с х..ем, где-то 12 с х...ем мегагерц.

    Не с х..ем, а с лихуем. Слово такое, народное, означает "с небольшим".

     

  • 1.2, pavlinux (??), 21:53, 19/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ... Дык, самое главное-то забыл...
    я к тому что сам таймер привязан к генератору, пусть не прерываний, но всё же.
     
     
  • 2.6, Некто (??), 09:29, 20/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    таймер привязан к одному генератору, а процессор -- к другому :)
    тот, другой -- пошустрей будя :)))))
     

  • 1.4, GByte (??), 07:31, 20/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а кто вам сказал что каждому процессу именно по 1нс будет давать?
    наносекунда - минимальная величина, никто не запрещает давать процессу по 10нс, по 100нс, и тд...
     
     
  • 2.9, pavlinux (??), 12:06, 20/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    echo 1 > /proc/sys/kernel/sched_granularity_ns

    :)

     

  • 1.5, Deka (??), 08:27, 20/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не понял про наносеунду. Это что прикол ?
    В книжке Роберта Лава все расписанно, и обоснованно.
    Ознакомтесь - и будет все понятно.
     
     
  • 2.7, DXT (??), 09:39, 20/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Не путайте теплое с мягким. человек переписал планировщик, а не доработал текущий
    it does not use runqueues, it uses a time-ordered rbtree to build a 'timeline' of future task execution, and thus has no 'array switch' artifacts (by which both the vanilla    scheduler and RSDL/SD are affected).
     
     
  • 3.8, Deka (??), 11:58, 20/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Это все же не правильно - про наносекунду. Под какие же процы это заточенно.
    Сильно частить нельзя - можно с ритма весь квартал сбить :-)
    Если таймер и привязан к наносекунде, то каждую наносекунду вырабатывается (скорее всего) програмное прерывание. Это не совсем корректно дергать весь кэш и регистры каждую наносекунду.
    И будет очень интересно сравнить это со стандартным планировщиком.
    А еще хотелось бы увидеть выбор планировщика при компиляции ядра. А то ведь там его нету :-(


     
     
  • 4.10, Аноним (-), 12:13, 20/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Пока нету, ибо выбирать нечего. RSDL ещё из -mm не выкинули и Con Kolivas его по немногу исправляет. Так что скоро их там 2-3 может и будет.
     
  • 4.11, belkin (?), 12:47, 20/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Перед передачей управления процессу планировщик заносит в спец. регистр процессора число тактов по истечении которых процессор выполнит исключение для возврата управления ОС. Число тактов вычисляется планоровщиком: N=ВремяДляПроцесса/частотаCPU. Есень пень что 1 nS процессу давать глупо. Речь идёт о точности.
     
     
  • 5.12, Deka (??), 10:09, 21/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Про спец регистры - каждому контенту задачи выделяется свое пространство памяти, в том числе и набор регистров (их копии). Программный счетчик никто трогать не будет. Про какой спец регистр идет речь ?
    Число тактов - нет, не совсем так. Каждой задаче выделяются кванты времени, в зависимости от  ее характера и от приоритета. Но в планировщике линуха еще есть специальный алгоритм для дополнительного перераспределения квантов времени.
    А про точность - ну здесь наверное правильнее говорить про масштаб точности. Поскольку если мой булыжник имеет частоту 2210 Мег, то можно говорить что тики идут через определенный интервал времени. Меньше которого замерить нельзя, и можно замерить время только кратное ему.
     
     
  • 6.17, belkin (?), 11:12, 23/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Про спец регистры - каждому контенту задачи выделяется свое пространство памяти, в
    >том числе и набор регистров (их копии). Программный счетчик никто трогать
    >не будет. Про какой спец регистр идет речь ?

    Речь идёт про те служебные регистры и функции, которые появились в Pentium'e 13-14 лет назад и предназначались для построения Real Time Systems. Intel их никогда специально не рекламировала.

     

  • 1.14, www.andr.ru (?), 19:54, 21/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо испытать его на предмет инверсии приоритетов.
     
  • 1.15, Аноним (-), 13:49, 22/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Попробовал сегодня на 2.6.20... ну что респект Ingo Molnar! Для десктопа на весчь, многие узкие места которые были в стандартном планировщике - исчезли.
     
  • 1.16, Аноним (-), 19:51, 22/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    какие например?
    кто ещё ставил эти патчи как впечатления?
     
  • 1.18, Аноним (-), 15:02, 11/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я слыхал я про таймер высокого разрешения, который есть сейчас на каждой плате, он может быть и юзается как-то. Вообще его профилировщики для точного измерения отрезков времени используют. Добирался к нему как-то года два назад даже из делфи:-)
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру