The OpenNET Project / Index page

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

Для ядра Linux представлен планировщик задач RIFS-ES

20.06.2012 12:50

В списке рассылки разработчиков ядра Linux представлен новый планировщик задач RIFS-ES, нацеленный на использование на десктоп-системах и обеспечение максимальной производительности интерактивных приложений. В своей работе RIFS-ES использует расширенные в сторону обеспечения интерактивности элементы расчёта приоритетов, применяемые в классическом планировщике System V и лишённые свойственных CFS усложнений, используемых для оценки интерактивности.

По сравнению со штатным планировщиком CFS проект RIFS-ES демонстрирует довольно существенное повышение отзывчивости: пробуждение через 10 мкс для RIFS-ES против 21 мкс для CFS для одного клиента, 30/19 мкс для двух клиентов (RIFS-ES проигрывает), 2342/4900 мкс для четырёх, 6112/8068 мкс для восьми и 9690/17497 мкс для шестнадцати.

  1. Главная ссылка к новости (https://lkml.org/lkml/2012/6/1...)
  2. OpenNews: Представлена четвёртая версия планировщика задач SCHED_DEADLINE для ядра Linux
  3. OpenNews: Обновление планировщика задач BFS с поддержкой ядра Linux 3.3
  4. OpenNews: Для Linux представлен планировщик задач BLD (Barbershop Load Distribution)
  5. OpenNews: Для ядра Linux представлен планировщик ввода-вывода FIOPS для SSD-накопителей
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/34144-rifs-es
Ключевые слова: rifs-es, sheduler, process, kernel, linux, latency
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 13:28, 20/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да сколько можно? Куда их столько-то?
     
     
  • 2.2, al (??), 13:33, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +5 +/
    для разных задач, свой планировщик. Разве по поводу зоопарка fs кто-то возникает?
     
     
  • 3.3, Аноним (-), 14:05, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > для разных задач, свой планировщик. Разве по поводу зоопарка fs кто-то возникает?

    Да, возникают многие, тысячи их. В каждой теме про ext4/btrfs/ZFS/любую ФС обязательно найдётся комментарий вида "чем оно лучше ext4/btrfs/ZFS/любой другой ФС", как будто такое сравнение корректно.

     
  • 2.4, ВовкаОсиист (ok), 14:13, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    если написали - значит нужно
     
     
  • 3.6, Аноним (-), 14:15, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Необязательно.
     
  • 3.7, ВовкаОсиист (ok), 14:16, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    блеа, не дописал. Как говорилось каждый под конкретную задачу. Это опенсорс, здесь делают ПО для железа, а не железо для ПО.
     
     
  • 4.8, Аноним (-), 14:17, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Иногда ПО делают не для железа, а от нечего делать.
     
     
  • 5.10, ВовкаОсиист (ok), 14:20, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    если альтернатива сможет работать быстрей, почему-бы не попробовать.
     
  • 5.39, iav (ok), 01:16, 21/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Вы так говорите, будто это что-то плохое.
     
  • 4.11, ананим (?), 14:35, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Это опенсорс, здесь делают ПО для железа, а не железо для ПО.

    неа.
    тут делают то, что кому интересно и/или выгодно.
    всё остальное — следствие.

     

  • 1.5, Аноним (-), 14:14, 20/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Планировщик без поддержки cgroups подобен плееру без поддержки проигрывания медиа.
    Конечно, можно натолкать туда всякие полезные фичи типа прожига дисков, заливания фоточек на фейсбук и отображения погоды на рабочем столе, но как плеер оно лучше не станет.
     
     
  • 2.36, zlo.rt.mipt.ru (?), 20:02, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А когда cgroups появился?
    Т.е. до планировщиков не было??
     

  • 1.9, Аноним (-), 14:20, 20/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > По сравнению со штатным планировщиком CFS проект RIFS-ES демонстрирует довольно существенное повышение отзывчивости: пробуждение через 10 usec для RIFS-ES против 21 usec для CFS для одного клиента, 30/19 usec для двух клиентов (RIFS-ES проигрывает), 2342/4900 usec для четырёх, 6112/8068 usec для восьми и 9690/17497 для шестнадцати.

    При этом в штатном планировщике, разумеется, не настроена группировка процессов, и таким образом он поставлен в заведомо невыгодное положение.
    Что-то мне подсказывает, что при использовании ulatencyd или systemd, CFS порвет этот велосипед как тузик грелку.

     
     
  • 2.34, Аноним (-), 16:33, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    что-то мне подсказывает что с групировкой процессов мы получим щедулинг близкий к M:N - от которого автор CFS бежал и кричал что ненужно.
     
     
  • 3.38, Аноним (-), 23:18, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А это зависит от того, как группировать. Сильно зависит.
     

  • 1.12, ананим (?), 14:38, 20/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    ХА!!!
    $ git clone https://code.google.com/p/rifs-scheduler/
    Cloning into rifs-scheduler...
    warning: You appear to have cloned an empty repository.

    нас обманули! это задний проход!

     
     
  • 2.13, Аноним (-), 14:49, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Видимо, у разработчика на компе уже стоит новый шедулер, и процесс, занимающийся заливкой кода в репу, отправлен в бессрочный слип (ввиду недостаточной "интерактивности").
     
  • 2.15, Аноним (-), 15:08, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ветки поищите
     
     
  • 3.29, ананим (?), 15:51, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    какбэ их сайт http://code.google.com/p/rifs-scheduler/source/checkout не намекает что это квест.

    зыж
    $ git help clone
    git-clone - Clone a repository into a new directory
    DESCRIPTION
           Clones a repository into a newly created directory, creates remote-tracking branches for each branch in the cloned repository

     

  • 1.14, pavlinux (ok), 15:00, 20/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/



    /*
    * By default the system creates a single root-domain with all cpus as
    * members (mimicking the global state we have today).
    */
    static struct root_domain def_root_domain;

    int __weak arch_sd_sibling_asym_packing(void)
    {
               return 0*SD_ASYM_PACKING;
    }


    Вот как-то так... :)

     
     
  • 2.16, Аноним (-), 15:11, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Моя нипанимат. Они в ретёрне умножают на ноль чтоле? Тогда просто почему не вернуть ноль? lol
     
     
  • 3.17, pavlinux (ok), 15:13, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Моя нипанимат. Они в ретёрне умножают на ноль чтоле? Тогда просто почему
    > не вернуть ноль? lol

    Надо было дописать /* reserved for future usage */  
    :D  

    Ща ещё
    ---

    Вот это функция resched_task из RIFS-ES




    static void resched_task(struct task_struct *p)
    {
            int cpu;

            assert_raw_spin_locked(&grq.lock);

            if (unlikely(test_tsk_thread_flag(p, TIF_NEED_RESCHED)))
                    return;

            set_tsk_thread_flag(p, TIF_NEED_RESCHED);

            cpu = task_cpu(p);
            if (cpu == smp_processor_id())
                    return;

            /* NEED_RESCHED must be visible before we test polling */
            smp_mb();
            if (!tsk_is_polling(p))
                    smp_send_reschedule(cpu);
    }


    эта из CFQ




    void resched_task(struct task_struct *p)
    {
             int cpu;

             assert_raw_spin_locked(&task_rq(p)->lock);

             if (test_tsk_need_resched(p))
                     return;

             set_tsk_need_resched(p);

             cpu = task_cpu(p);
             if (cpu == smp_processor_id())
                     return;

             /* NEED_RESCHED must be visible before we test polling */
             smp_mb();
             if (!tsk_is_polling(p))
                     smp_send_reschedule(cpu);
    }



     
     
  • 4.19, Аноним (-), 15:18, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    lol. Кстате, я конечно не супер-пупер Си программер, но увидел это - (struct task_struct *p). А эти ребята поро typedef struct foo1 foo0; знают?
     
     
  • 5.22, pavlinux (ok), 15:24, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Так нагляднее, с typedef заплутаешь.
     
     
  • 6.30, ананим (?), 15:54, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    ну а тут тебя это смущает что ли?
    set_tsk_thread_flag(p, TIF_NEED_RESCHED)
    и
    set_tsk_need_resched(p)
     
  • 5.23, bircoph (ok), 15:24, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет никакого смысла пихать typedef направо и налево. Часто удобнее оставить struct str_t *abc как есть. Это делает код понятнее, потому что не нужно грепать, что же за foo0 скрыто.
     
  • 3.18, анон (?), 15:17, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Может быть для того, чтобы когда захочется не 0, не забыть умножить на что полагается
     
     
  • 4.20, Аноним (-), 15:19, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну вот когда надо будет, тогда и пишите. Пока не надо - это просто лишние такты в помойку, хотя может и не критично, в зависимости как часто эту функцию вызывают.
     
     
  • 5.31, Crazy Alex (ok), 16:02, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это почти с гарантией будет соптимизировано. Не забыть - много важнее.
     
  • 4.24, bircoph (ok), 15:25, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Может быть для того, чтобы когда захочется не 0, не забыть умножить
    > на что полагается

    Для таких случаев делают комментарий, а не тупую бесполезную операцию в надежде "компилятор это исправит".

     
     
  • 5.37, Aquarius (ok), 21:01, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    не путай надежду с уверенностью
     
  • 2.35, piteri (ok), 19:48, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А что вам не нравится то?
     

  • 1.21, pavlinux (ok), 15:23, 20/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    #define DEFAULT_PRIO           (MAX_RT_PRIO + 20)

    Ну чё, талант, Инго Молнар раньше тоже так делал,
    правда он скромнее был, он всего лишь 6 приплюсовывал :)

     
     
  • 2.25, Аноним (-), 15:25, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Меня терзают смутные сомнения, что это очередные авантюристы, накопипастившие код CFQ и немного его поправившие в нужную сторону.
     
     
  • 3.27, pavlinux (ok), 15:34, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Меня терзают смутные сомнения, что это очередные авантюристы, накопипастившие код CFQ
    > и немного его поправившие в нужную сторону.

    А это все планировщики такие будут. Они отличаются только алгоритмами
    определения задачи которую нужно поставить в очередь на проц,
    дальше вызывается smp_send_reschedule().
    Так что, задача планировщика - это сказать "хочу вот эту!"

     

  • 1.26, all_glory_to_the_hypnotoad (ok), 15:33, 20/06/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > 30/19 usec для двух клиентов (RIFS-ES проигрывает),

    т.е. для десктопа он не нужен. Парадокс, однако

     
     
  • 2.28, Аноним (-), 15:35, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Некоторые видят только то, что хотят видеть. Остальное - не видят в упор. Парадокс.
     
     
  • 3.32, pavlinux (ok), 16:20, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Остальное - не видят в упор.

    Вупор обиделся и ушёл домой.

     
     
  • 4.33, ананим (?), 16:29, 20/06/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Парадокс этого даже не заметил.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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