The OpenNET Project / Index page

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

Планировщик задач CFS будет включен в состав Linux ядра 2.6.23

10.07.2007 13:03

Планировщик задач с полностью справедливым распределением ресурсов CFS (Completely Fair Scheduler), после трех месяцев обкатки в экспериментальной "-mm" ветке Linux ядра, включен в состав ядра 2.6.23, в качестве основного планировщика.

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

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

  1. Главная ссылка к новости (http://www.linuxinsight.com/cf...)
  2. OpenNews: Сравнение экспериментальных планировщиков CFS-v4 и SD-0.44
  3. OpenNews: Переработанный справедливый планировщик задач для Linux ядра
  4. LWN: Schedulers: the plot thickens
  5. OpenNews: Энергосберегающее Linux ядро.
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/11356-kernel
Ключевые слова: kernel, linux, cfq, scheduler
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (15) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, TTT (?), 13:34, 10/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    что-то у меня не сходится, поясните невежде
    сказано:
    > Единица планирования времени в CFS фиксирована - наносекунда
    на 3GHz процессоре за 1-у наносекунду проходит 3 такта, учитывая что даже чтение из памяти может занять несколько десятков тактов, а за один такт точно не делается больше одной опарации ( во всяком случае на х86 ), то как можно планировать каждую наносекунду?
     
     
  • 2.3, alcohollica (?), 15:39, 10/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    я так понимаю, это для того, чтобы оставить задел на будущее - серастет сейчас в основном не частота процессоров, а количество ядер.
     
     
  • 3.4, alcohollica (?), 15:43, 10/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    клавиатура сглючила. :)
    так вот. в основном растет не частота процессоров, а количество ядер. И видимо легче отталкиваться от временного промежутка, чем от частоты.
    Хотя все это конечно ИМХО
     
  • 2.5, Aquarius (?), 19:39, 10/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А кто что-то сказал, про конкретный порядок количества, измеряемого этой единицей измерения?
    Кто сказал, что есть возможность, к примеру, задать 3 наносекунды для длительности чего-либо?

    >> Единица планирования времени в CFS фиксирована - наносекунда
    >на 3GHz процессоре за 1-у наносекунду проходит 3 такта, учитывая что даже
    >чтение из памяти может занять несколько десятков тактов, а за один
    >такт точно не делается больше одной опарации ( во всяком случае
    >на х86 ), то как можно планировать каждую наносекунду?

     
  • 2.6, serg1224 (?), 00:10, 11/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    > ,,, а за один такт точно не делается больше одной опарации...
    Да, вроде, давно уже делается. На Интелах, по крайней мере.
     
  • 2.7, _Nick_ (??), 07:15, 11/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    > как можно планировать каждую наносекунду?

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

    т.е. неважно сколько инструкций выполнил процесс за отведенный ему слайс в минимум одну наносекудну: хоть 1, хоть 3, хоть 500 (ну, через пиццот лет :) - при прерывании таймера управление может быть передано другому процессу.

     
     
  • 3.8, _Nick_ (??), 07:20, 11/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    кстати, выражения "Единица планирования времени в CFS фиксирована - наносекунда"
    и "как можно планировать каждую наносекунду?" не приведены к общему знаменателю :)
    т.е. говорят о разных вещах.
    Те. первая утверждает, что результатом работы шедулера будет _количество_ наносекунд, выданное какому-либо процессу.
    Вторая робко надееться, что каждая наносекунда работы процессора будет точно расписана :)
    Ессьно, этого не будет. Сам шедулер _может_ работать больше наносекунды (если конечно нужно и частота проца достаточно низка). Просто на его выходе будет цыфра в наносекундах.
     

  • 1.2, DEC (??), 13:55, 10/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    n CFS this fairness imbalance is expressed and tracked via the per-task p->wait_runtime (nanosec-unit) value. "wait_runtime" is the amount of time the task should now run on the CPU for it to become completely fair and balanced.

    Wrong translation

     
  • 1.9, Denis (??), 12:51, 11/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот интересно - его намернво заменять, или можно будет выбрать между несколькими вариантами?
    И как бы тоже крайне интересно - почему все упираются в наносекунду?
    Это просто точность шедулера наносекунда. А задания которые будут находиться в состоянии ожидания, состояния выполнения,обработчики нижних и верхних половин и програмные прерывания будут более рационально использовать время, пусть даже одного ядра.
     
  • 1.10, Denis (??), 12:54, 11/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А кто вообще писал новость?
    На rbtree перешли уже давно, с ядра так эдак 2.6.10, об этом Роберт лав писал в книжке. Или у разработчиков ядра уже дежавю :-)
     
  • 1.11, Ivan (??), 13:35, 11/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    дополните и поправте если я заблуждаюсь, преключение контекста задачи
    1 чем больше за единицу времени тем лучше? (плавность перехода) и  хреново меньше попаданий в кешь ЦПУ растут задержки при обращении к памяти общее снижение производительности

    2 чем меньше за единицу времени тем лучше?

     
     
  • 2.12, _Nick_ (??), 00:22, 13/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >дополните и поправте если я заблуждаюсь, преключение контекста задачи
    >1 чем больше за единицу времени тем лучше? (плавность перехода) и  
    >хреново меньше попаданий в кешь ЦПУ растут задержки при обращении к
    >памяти общее снижение производительности
    >
    >2 чем меньше за единицу времени тем лучше?

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

    Но факт фактом: скорость и интерактивность - на разных чашах весов.

     
  • 2.13, Denis (??), 08:31, 13/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    1) - не совсем так, все зависит от систему (сервер, рабочая станция). По принципу мышления, если за кэшем не следить, то падает производительность, но ядро следит за кэшем и поддерживает его в актуальном состоянии + у проца есть предсказание переходов и ветвлений. Если сравнить скорость обмена с памятью и кэшем 2 уровня - скорость раза в два меньше.
    2) - в планировщике задач это оптимизированно, и перестаривается в процессе работы.
     

  • 1.14, Ne01eX (??), 09:40, 13/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    c CFS понятно, а что с SD (бывший RSDL) будет? Более правильным решением было бы конечно включению в основную ветку ядра обоих новых планировщиков и дать юзверю (то есть мне) уже выбрать... А вообще, - хорошая тенденция.
     
  • 1.15, Аноним (-), 18:45, 16/04/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Планирование заданий
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    A-Real
    Hosting by Hoster.ru
    Хостинг:

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