The OpenNET Project / Index page

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

Новый шаг по интеграции в Linux ядро RealTime-расширений

10.02.2010 16:26

До сих пор, в основной ветке Linux использовался только один тип спинлок-блокировок - «вращающиеся» спинлоки (spinning spinlocks). Однако, в дереве PREEMPT_RT, они должны быть дифференцированы между спинлоками которые могут «засыпать» в режиме реального времени и обычными спинлоками, даже в режиме реального времени. Это требует нового пространства имен и решения, какой тип спинлоков переименовать.

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

Позднее, в заключительной стадии слияния Linux 2.6.33, Линус выступил с предложением:

  • Переименовать архитектуру реализаций спинлоков от raw_spinlock к arch_spinlock.
  • Использовать raw_spinlock для спинлоков, которые работают даже на RT-ядре
  • Сохранить spinlock блокировку для спинлоков, которые могут засыпать в режиме реального времени.

Томас Глейкснер создал серию патчей, которые Линус включил в ядро 2.6.33. Это позволило уменьшить размеры PREEMPT_RT патча на 350 Кбайт - еще одна важная веха на пути к полной интеграции «Реального времени» в основную ветку ядра!

  1. Главная ссылка к новости (http://www.osadl.org/Single-Vi...)
  2. OpenNews: Для Debian GNU/Linux представлены пакеты Linux ядра, ориентированные на RealTime
  3. OpenNews: Новая стабильная версия real-time ветки Linux ядра
  4. OpenNews: Обновление Linux ядра: 2.6.27.17 и 2.6.28.5. Новая версия real-time патчей
Автор новости: pavlinux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/25366-PREEMPT_RT
Ключевые слова: PREEMPT_RT, linux, kernel, realtime
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (33) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Zenitur (?), 16:58, 10/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И это здорово!
    одно из применений RT-ядра - студии звукозаписи. Во всех ориентированных на это дистрибутивах только RT-ядро.
     
     
  • 2.5, anonimus (?), 17:23, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, но только оно не всегда спасает, когда дело упирается в планировщик ввода/вывода - все со звуком начинает кавкать, икать и заикаться...
    Попробуйте в Ardour пару десятков треков с эффектами покрутить...
    Надеюсь, что эти нововведения хоть как-то поправят положение дел в лучшую сторону...
    Хотя с планировщиком тоже что-то нужно делать, уже с 24-го RT ядра тянется это все дело...
     
     
  • 3.17, devl547 (?), 20:12, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >планировщик ввода/вывода

    BFQ/NOOP/SIO - попробуйте, может что поможет.

     
     
  • 4.18, anonimus (?), 20:16, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>планировщик ввода/вывода
    >
    >BFQ/NOOP/SIO - попробуйте, может что поможет.

    Вы наверное хотели сказать cfq anticipatory deadline noop
    пробовал все - проблема не разрешается...

     
  • 3.26, Basiley (ok), 03:26, 11/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    попробуйте поиграться с ionice.
    к сожаленю текущая версия reniced - рулит только планирвоащиками CPU(без IO).
    мб выйдет аналог.
     

  • 1.2, Аноним (2), 16:58, 10/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "Томас Глейкснер создал серию патчей, которые Линус включил в ядро 2.6.33." - как же это кажется приятным.
    тестировал летом, помнится что были проблемы в 2.6.31 с виртуалбоксом - интересно что получится..
     
  • 1.3, Аноним (3), 17:16, 10/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    >одно из применений RT-ядра - студии звукозаписи.

    Зачем оно этим студиям такое реалтаймовое ядро понадобилось, под которое музыкального софта то и нет нормального.

     
     
  • 2.6, Tav (ok), 17:41, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Кому нет, а кто вовсю использует.
     
  • 2.7, аноним (?), 17:44, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > под которое музыкального софта то и нет нормального

    Вы шутите?

     
     
  • 3.24, НоуНэйм (?), 02:21, 11/02/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    нет. он троллит.
     
  • 2.10, KaLGaN (?), 18:41, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    http://ubuntustudio.org/
     
     
  • 3.27, Basiley (ok), 03:27, 11/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >http://ubuntustudio.org/

    есть посерьезнее(и постарше)MM-дистры.

     
     
  • 4.36, prox (ok), 13:06, 15/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Какие например?
     

  • 1.4, Аноним (-), 17:19, 10/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Често не понимаю суть новости. Так какими-же должны быть спинлоки в режиме реального времени? Те что засыпают уже вряд-ли можно назвать спинлоками. Это скорее уже семафоры.
     
  • 1.11, друг XoRe (?), 18:41, 10/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    что-то я не совсем пойму, помогите: ядро Linux работает со свап пространством, о какой  реал тайм может идти речь? или это про встроенные системы? допуская что в "мягком" виде,но не в "жестком"  еще можно прогнозировать выполнение задачи на время загруки выгрузки(время) swap контекста.
     
     
  • 2.13, uZver (??), 19:09, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    а если не допускать работы со свапом? заблокать его к примеру? ядро без RT-патчей все равно не будет реал-таймовым...
     
  • 2.16, User294 (ok), 19:48, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Я что-то не вдупляю: что мешает не пользоваться свопом? А так - по моим наблюдениям линух юзает своп лишь когда реально припирает. Ну, будет вам OOM kill вместо тормозов от свопа. Как, полегчало? :)

    ЗЫ павлин вон написал более цивильный пример борьбы с пакостями.
    ЗЗЫ эй, поклонники гарбаж коллекторов, изобразите чтонить подобное? :)

     
     
  • 3.19, KdF (??), 20:44, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Я что-то не вдупляю: что мешает не пользоваться свопом? А так -
    >по моим наблюдениям линух юзает своп лишь когда реально припирает. Ну,
    >будет вам OOM kill вместо тормозов от свопа. Как, полегчало? :)
    >
    >
    >ЗЫ павлин вон написал более цивильный пример борьбы с пакостями.
    >ЗЗЫ эй, поклонники гарбаж коллекторов, изобразите чтонить подобное? :)

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

     
     
  • 4.30, User294 (ok), 10:56, 11/02/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Простите, а вы это в теории проверяли или на практике По шагам 1 Берем маши... большой текст свёрнут, показать
     
     
  • 5.32, KdF (??), 02:48, 12/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Честно говоря, критериев, приводящих к выбросу в своп при конкретных значениях объемов памяти, дисковых буферов, и других параметров, я не знаю, в исходниках ядра бываю редко.

    Я не знаю, какими дистрибутивами вы пользуетесь, но ситуация, которую вы описываете, как раз характерна для неправильной работы механизма распределения памяти. Выкинуть в своп - всегда правильное решение для least recently used данных, особенно на сервере. При недостатке памяти первым делом он покиляет дисковые кэши, а уж потом начнет выгружать в своп страницы.

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

    Также учитывайте механизм выделения памяти приложению в Linux - приложению по факту выделения количество памяти не гарантируется, это не физические страницы, а страницы выдаются по попытке доступа к ним. overcommit + swapiness, рекомендую обратить внимание. Чтобы в один прекрасный день не обнаружить сервис, который выжрал 8 Гб якобы имеющейся в системе без свопа памяти, которая на самом-то деле уже распределена ;)

     
     
  • 6.34, anonymous (??), 15:46, 12/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Честно говоря, критериев, приводящих к выбросу в своп при конкретных значениях объемов
    >памяти, дисковых буферов, и других параметров, я не знаю, в исходниках ядра бываю редко.

    А г-ди, исходники ядра.. google://vm.swappiness vm.vfs_cache_pressure, насчет oom killer с компанией — vm.overcommit_memory vm.oom_kill_allocating_task vm.overcommit_ratio
    Врядли вам нужно больше.

     
     
  • 7.35, KdF (??), 15:20, 14/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    vfs_cache_pressure не видел, посмотрю, про остальные в курсе, но они к свопу данных при имеющейся свободной памяти как относятся?

     
     
  • 8.37, anonymous (??), 16:53, 15/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    vm swappiness вроде бы непосредственно, а остальные к oom же... текст свёрнут, показать
     
  • 3.20, Tav (ok), 21:39, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > по моим наблюдениям линух юзает своп лишь когда реально припирает

    По умолчанию это не так. Но можно настроить (значение в /proc/sys/vm/swappiness).

    А RT-приложения все равно используют memlock, если пользователю разрешено.

     
     
  • 4.31, User294 (ok), 10:58, 11/02/2010 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >По умолчанию это не так.

    В каких ядрах, ос и прочая? В ванилле какойнить? А то попавшиеся под руку "десктопные" линухи вели себя именно описанным мной образом - своп обычно пустой пока не начнет натурально прижимать :).Да и на серверных что-то не видел отлива в своп пока душняк не наступил. Что я делаю не так? oO

     
     
  • 5.33, aZ (ok), 03:33, 12/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Похоже, что ты вообще мало имел дел с линуксом. Только троллить горазд на опеннете.
     
  • 3.21, anonymous vulgaris (?), 21:40, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >ЗЗЫ эй, поклонники гарбаж коллекторов, изобразите чтонить подобное? :)

    Риал тайм жаба не собирает мусор когда не надо

    http://java.sun.com/javase/technologies/realtime/index.jsp

    New Memory Management Schemes

    Neither immortal nor scoped memories are garbage collected, so using them avoids problems of GC interference.

    но есть мусорщики с детерминированным поведением

    Metronome is a deterministic garbage collector that offers bounded low pause times and specified application utilization for standard Java applications.

     

  • 1.12, Nick (??), 19:00, 10/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Свап можно выключить, что нормально для встраиваемых систем. А как обстоят дела с десктопными решениями?
     
     
  • 2.14, pavlinux (ok), 19:10, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И вообще, swap и реалтайм никому не мешают ...
    Реалтайм проги пишут с запрещением выгрузки в shared mem




    #include <sys/resource.h>


    struct rlimit limit;
    limit.rlim_cur = 0;
    limit.rlim_max = 0;

    setrlimit(RLIMIT_CORE, &limit); // не выдавать кору

    long pagesize = sysconf(_SC_PAGESIZE); // страничка для млока

    char *buf;
    char *data;

    buf =  (char *)malloc(size+1+pagesize);
    data = (char *)((((intptr_t)buf + pagesize - 1) / pagesize) * pagesize);

    setvbuf(data, (char *) NULL, _IONBF, 0);
    mlock(data, size+1);

    // Работаем

    munlock(data, size+1);

    free(buf);



     
     
  • 3.22, друг XoRe (?), 22:55, 10/02/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    нет, не согласен в книги FreeBSD. Архитектура и реализация. Невил-нил Д. В., Маккузик М. К
    имеено проблема была со свапом, поэтому FreeBSD не может работать как real-time система + ОЧЕНЬ БОЛЬШОЙ ВОПРОС TCP/IP как будете прогнозировать точное время выполения задачи?????????????????????????? так что реализация, только для локальной хоста, не более (причем без сваппа) и скорее всего без некоторых системных процессов, например будет потеря кол-ва времени (тиков) для ругих процессов (системынх и пользовательсикх) так как весь cpu будет отдан под задачу real-time, что скореевсего скажется на целостности системы,из-за невозможности отдать время системному процессу. Хотя согласен, для систем "мягкого реального времени" планировщик пойдет, для жесткого нет -  ответ системы не детерминирован.
     
     
  • 4.28, pavlinux (ok), 03:43, 11/02/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >нет, не согласен в книги FreeBSD. Архитектура и реализация. Невил-нил Д. В.,
    >Маккузик М. К имеено проблема была со свапом, поэтому FreeBSD не может
    > работать как real-time система + ОЧЕНЬ БОЛЬШОЙ ВОПРОС TCP/IP

    Хоть в одном стандарте на TCP/IP есть временные константы ??? Ну а хрен тогда...
    > как будете прогнозировать точное время выполения задачи??????????????????????????

    Маккузик крутой наверно перец, что даже не учёл понятия "СИСТЕМА"!!!

    Никто против не будет если я любую сеть обзову системой?! Нет!
    Имеем минимум два хоста соединённые в сеть, [X] --- [Y],
    поднимите чё-нить, кто за то, что эту ситему можно назвать REAL-TIME, только
    при условии, что ОБА ЭЛЕМЕНТА СИСТЕМЫ ЯВЛЯЮТСЯ REAL-TIME?!

      RT = (X c RT) + ( Y c RT )  

    По-русски - Множество RT полно, тогда и только тогда, когда каждый элемент подмножества принадлежит этому множеству.

    Так какой в попу реал тайм, если даже не известно придет ли пинг обратно,
    скажем из Чили, или со спутника.

    Всё ещё против?!  Ну тогда другая система - SOFTWARE <-> HARDWARE
    Кто за то, что QNX и vxWorks станут ацтойными операционками, если
    у RTC будет погрешность в 25%?! То есть с вероятностью 0.001,
    за 4 реальные секунды он убежит или затормозит на 1 секунду.  


    > так что реализация, только для локальной хоста,  не более (причем без сваппа)
    > и скорее всего без некоторых системных процессов, например
    > будет потеря кол-ва времени (тиков) для других процессов (системных и пользовательских)
    > так как весь cpu будет отдан под задачу real-time, что скорее всего
    > скажется на целостности системы,из-за невозможности отдать время системному процессу.
    > Хотя согласен, для систем "мягкого реального времени" планировщик пойдет,
    > для жесткого нет - ответ системы не детерминирован.

    Детерминированность...
    Хе, а что такое время?! 9 мульёнов периодов полураспада какого-то там изпопа Цезия?
    Тут доказали, что скорость света не постоянна, а вы про время...

     

  • 1.23, аноним (?), 02:09, 11/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >еще одна важная веха на пути к полной интеграции «Реального времени» в основную ветку ядра!

    Автору новости - поменьше пафоса, вы не на первомайской демонстрации. Суть не  новом шаге, а в том, что разгребают старые ошибки, когда ядро изначально не было реалтайм. Уменьшение патча на 350 Кб - это, безусловно, прорыв!

     
     
  • 2.25, pavlinux (ok), 03:06, 11/02/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>еще одна важная веха на пути к полной интеграции «Реального времени» в основную ветку ядра!
    >
    >Автору новости - поменьше пафоса, вы не на первомайской демонстрации. Суть не
    > новом шаге, а в том, что разгребают старые ошибки, когда
    >ядро изначально не было реалтайм. Уменьшение патча на 350 Кб -
    >это, безусловно, прорыв!

    http://www.osadl.org/Single-View.111+M58050282514.0.html

    "This reduced the size of the preempt-rt patch by 350 kByte -
    another important milestone on our road towards complete
    integration of the RT tree into the mainline kernel!"


    important milestone, важный этап или веха...  

    ЭТАП применимо к событиям которые будут известны в будущем, т.е. переменным
    перечислимого типа, при исторической оценке событий, когда события явно
    можно делить на части.
    Слово же ВЕХА, нихрена не определенного типа, void говоря по-нашему :)
    Ибо что будя завтра, не знает даже "то, чаво не может быть".

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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