Ingo Molnar объявил (http://kerneltrap.org/node/8059) о выходе релиза набора патчей с реализацией подсистемы модульных планировщиков задач (Modular Scheduler Core) и модуля-планировщика с полностью справедливым распределением ресурсов (Completely Fair Scheduler - CFS).
Проект представляет собой полностью переработанный механизм планирования задач для Linux, в котором устранены недостатки текущей реализации.
В планировщике задач CFS вместо очередей процессов ожидающих выполнения, используется дерево rbtree, определяющее план с временем перехода к выполнению очередного процесса. Единица планирования времени в CFS фиксирована - наносекунда, и не привязана к частоте генерации прерываний таймера (HZ).CFS планировщик поддерживает два режима работы: 'desktop' (low latencies) и 'server' (good batching).
URL: http://kerneltrap.org/node/8059
Новость: http://www.opennet.me/opennews/art.shtml?num=10531
Секунда есть время, равное 9192631770 периодам излучения, соответствующего
переходу между двумя сверхтонкими уровнями основного состояния атома цезия 133.
Если он, Ingo, подключит такой таймер к Линуху, тогда одна наносекунда
будет, и то с погрешностью, равна 9 таким переходам.
А пока таймеры в компах, работают на кварце с собственной частотой где-то около
24 с х..ем, где-то 12 с х...ем мегагерц. т.е. 24 мильёна в секунду. И потом делится на участки по 1024, т.е. отрабатывается среднее, и из 24000000 делаются 1024 выборки они то и равны секунде в компе.Как он собрается ловить нано секунду???
1.0 nanoseconds (1.0 ns) – cycle time for frequency 1 GHz, radio wavelength 0.3 mhttp://en.wikipedia.org/wiki/Nanosecond
Наносекунды разные бывают :).
> 24 с х..ем, где-то 12 с х...ем мегагерц.Не с х..ем, а с лихуем. Слово такое, народное, означает "с небольшим".
... Дык, самое главное-то забыл...
я к тому что сам таймер привязан к генератору, пусть не прерываний, но всё же.
таймер привязан к одному генератору, а процессор -- к другому :)
тот, другой -- пошустрей будя :)))))
а кто вам сказал что каждому процессу именно по 1нс будет давать?
наносекунда - минимальная величина, никто не запрещает давать процессу по 10нс, по 100нс, и тд...
echo 1 > /proc/sys/kernel/sched_granularity_ns:)
Не понял про наносеунду. Это что прикол ?
В книжке Роберта Лава все расписанно, и обоснованно.
Ознакомтесь - и будет все понятно.
Не путайте теплое с мягким. человек переписал планировщик, а не доработал текущий
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).
Это все же не правильно - про наносекунду. Под какие же процы это заточенно.
Сильно частить нельзя - можно с ритма весь квартал сбить :-)
Если таймер и привязан к наносекунде, то каждую наносекунду вырабатывается (скорее всего) програмное прерывание. Это не совсем корректно дергать весь кэш и регистры каждую наносекунду.
И будет очень интересно сравнить это со стандартным планировщиком.
А еще хотелось бы увидеть выбор планировщика при компиляции ядра. А то ведь там его нету :-(
Пока нету, ибо выбирать нечего. RSDL ещё из -mm не выкинули и Con Kolivas его по немногу исправляет. Так что скоро их там 2-3 может и будет.
Перед передачей управления процессу планировщик заносит в спец. регистр процессора число тактов по истечении которых процессор выполнит исключение для возврата управления ОС. Число тактов вычисляется планоровщиком: N=ВремяДляПроцесса/частотаCPU. Есень пень что 1 nS процессу давать глупо. Речь идёт о точности.
Про спец регистры - каждому контенту задачи выделяется свое пространство памяти, в том числе и набор регистров (их копии). Программный счетчик никто трогать не будет. Про какой спец регистр идет речь ?
Число тактов - нет, не совсем так. Каждой задаче выделяются кванты времени, в зависимости от ее характера и от приоритета. Но в планировщике линуха еще есть специальный алгоритм для дополнительного перераспределения квантов времени.
А про точность - ну здесь наверное правильнее говорить про масштаб точности. Поскольку если мой булыжник имеет частоту 2210 Мег, то можно говорить что тики идут через определенный интервал времени. Меньше которого замерить нельзя, и можно замерить время только кратное ему.
>Про спец регистры - каждому контенту задачи выделяется свое пространство памяти, в
>том числе и набор регистров (их копии). Программный счетчик никто трогать
>не будет. Про какой спец регистр идет речь ?Речь идёт про те служебные регистры и функции, которые появились в Pentium'e 13-14 лет назад и предназначались для построения Real Time Systems. Intel их никогда специально не рекламировала.
Надо испытать его на предмет инверсии приоритетов.
Попробовал сегодня на 2.6.20... ну что респект Ingo Molnar! Для десктопа на весчь, многие узкие места которые были в стандартном планировщике - исчезли.
какие например?
кто ещё ставил эти патчи как впечатления?
Я слыхал я про таймер высокого разрешения, который есть сейчас на каждой плате, он может быть и юзается как-то. Вообще его профилировщики для точного измерения отрезков времени используют. Добирался к нему как-то года два назад даже из делфи:-)