#1
|
|||
|
|||
Реальное время в Linux
Eugene Muzychenko написал(а) к All в Nov 20 17:03:15 по местному времени:
Привет! Вот на хабре пошел срач по поводу того, что для достижения "нормального RT" линуксовое ядро пришлось песциальным образом переделать: https://habr.com/ru/company/ruvds/blog/529388 Если бы речь шла о виндовом ядре, вопросов бы не возникло - самой MS это на фиг не упало, поэтому те, кому оно надо, делают свои микроядра, крутящиеся на выделенных процессорах/ядрах. Но Linux активно используется на хреновой горе разных устройств, где жесткий RT весьма даже востребован. Так почему в общее ядро не добавят настроек для управления политиками обработки прерываний, переключения потоков, а заодно и счетчиков, показывающих, какие ядерные компоненты злостно портят реактивность системы? Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать) --- GoldED+/W32-MSVC 1.1.5-b20170303 |
#2
|
|||
|
|||
Re: Реальное время в Linux
Zhenja Kaliuta написал(а) к Eugene Muzychenko в Nov 20 18:32:43 по местному времени:
Нi, Eugene! On Fri, 27 Nov 2020 17:03:15 +0100 Eugene Muzychenko writes: EM> Вот на хабре пошел срач по поводу того, что для достижения EM> "нормального RT" линуксовое ядро пришлось песциальным образом EM> переделать: EM> https://habr.com/ru/company/ruvds/blog/529388 EM> Если бы речь шла о виндовом ядре, вопросов бы не возникло - самой EM> MS это на фиг не упало, поэтому те, кому оно надо, делают свои EM> микроядра, крутящиеся на выделенных процессорах/ядрах. Но Linux EM> активно используется на хреновой горе разных устройств, где жесткий EM> RT весьма даже востребован. Так почему в общее ядро не добавят EM> настроек для управления политиками обработки прерываний, EM> переключения потоков, а заодно и счетчиков, показывающих, какие EM> ядерные компоненты злостно портят реактивность системы? linux-rt'шники достаточно успешно апстримят. Помню доклад Thomas Gleixner на LPC о том, каков был размер патча 10 лет назад и на сколько невозможным это всё казалось, и на сколько сейчас всё хорошо. Если открыть https://www.linuxplumbersconf.org/bl...rs-conference/ то будет There's just a little left to get RT fully into mainline, and the light at the end of the tunnel is finally in view. It is expected that the RT patch will be in mainline within a year --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
#3
|
|||
|
|||
Реальное время в Linux
Alexey Vissarionov написал(а) к Eugene Muzychenko в Nov 20 22:55:22 по местному времени:
Доброго времени суток, Eugene! 27 Nov 2020 17:03:14, ты -> All: EM> https://habr.com/ru/company/ruvds/blog/529388 EM> Если бы речь шла о виндовом ядре, вопросов бы не возникло - самой EM> MS это на фиг не упало, поэтому те, кому оно надо, делают свои EM> микроядра, крутящиеся на выделенных процессорах/ядрах. При цене современных микроконтроллеров и их возможностях это вообще никому никуда не упало. Кроме группы энтузиастов, которые что-то пилят вот уже не первый десяток лет, совершенно не замечая, что их труды уже никому не нужны. EM> Но Linux активно используется на хреновой горе разных устройств, EM> где жесткий RT весьма даже востребован. Из того, что устройство использует Linux, и из того, что устройству нужно RT, совершенно не следует, что RT нужно реализовывать именно в Linux. EM> Так почему в общее ядро не добавят настроек для управления политиками EM> обработки прерываний, переключения потоков, а заодно и счетчиков, EM> показывающих, какие ядерные компоненты злостно портят реактивность EM> системы? Потому что сделать "умную" периферию стало намного проще и дешевле. Сам же написал про выделенные процессоры - чем тебе лошадьтроллер не? -- Alexey V. Vissarionov aka Gremlin from Kremlin gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii ... Жареный петух - птица мудрости --- /bin/vi |
#4
|
|||
|
|||
Реальное время в Linux
Eugene Muzychenko написал(а) к Zhenja Kaliuta в Nov 20 23:02:18 по местному времени:
Привет! 27 Nov 20 18:32, you wrote to me: ZK> There's just a little left to get RT fully into mainline, and the ZK> light at the end of the tunnel is finally in view. It is expected that ZK> the RT patch will be in mainline within a year Молодцы, что двигают это в общее ядро. Делать для этого форки и прикручивать патчи, право слово, стыдно. Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать) --- GoldED+/W32-MSVC 1.1.5-b20170303 |
#5
|
|||
|
|||
Реальное время в Linux
Eugene Muzychenko написал(а) к Alexey Vissarionov в Nov 20 23:03:23 по местному времени:
Привет! 27 Nov 20 22:55, you wrote to me: AV> Кроме группы энтузиастов, которые что-то пилят вот уже не первый AV> десяток лет Вот напрочь не понимаю, что там можно пилить даже год, не говоря уже о десятках, при наличии полного комплекта открытых исходников. AV> Из того, что устройство использует Linux, и из того, что устройству AV> нужно RT, совершенно не следует, что RT нужно реализовывать именно в AV> Linux. А какой смысл ставить на мелкое, одноплатное и узкоспециализированное устройство еще и периферийные программируемые контроллеры, если быстродействия основного процессора с избытком хватает для обслуживания всей периферии? AV> Потому что сделать "умную" периферию стало намного проще и дешевле. Проще и дешевле, чем раньше, но ни разу не проще и не дешевле, чем прицепить ее напрямую к GPIO (если, конечно, позволяют протоколы). AV> Сам же написал про выделенные процессоры - чем тебе лошадьтроллер не? Прежде всего тем, что для него нужен отдельный софт для разработки и отладки, отдельный проект для этого софта, нередко - и отдельный разработчик. Ты-то сам много ли периферийных контроллеров станешь паять и программировать, если тебе в любом встроенном линуксе дать полноценный RT через GPIO/DMA, мягкий - для приложения, и жесткий - для драйвера? :) Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать) --- GoldED+/W32-MSVC 1.1.5-b20170303 |
#6
|
|||
|
|||
Re: Реальное время в Linux
Zhenja Kaliuta написал(а) к Eugene Muzychenko в Nov 20 00:40:55 по местному времени:
Нi, Eugene! On Fri, 27 Nov 2020 23:02:18 +0100 Eugene Muzychenko writes: ZK>> There's just a little left to get RT fully into mainline, and the ZK>> light at the end of the tunnel is finally in view. It is expected ZK>> that the RT patch will be in mainline within a year EM> Молодцы, что двигают это в общее ядро. Делать для этого форки и EM> прикручивать патчи, право слово, стыдно. там достаточно много изменений в core (шедулер, локи, ...), и одно -- нахачить для себя, другое -- чтобы это было применимо везде, пусть даже с условной компиляцией. Это обычный подход в OSS, сначала нахачим, потом причёсываем в апстрим. Там если сразу в апстрим, оно бы не взлетело никогда. Но всё открыто ж, если интересно, посмотри архивы. Я RT не интересовался особо. --- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
#7
|
|||
|
|||
Реальное время в Linux
Alexey Vissarionov написал(а) к Eugene Muzychenko в Nov 20 04:44:44 по местному времени:
Доброго времени суток, Eugene! 27 Nov 2020 23:03:22, ты -> мне: AV>> Кроме группы энтузиастов, которые что-то пилят вот уже не первый AV>> десяток лет EM> Вот напрочь не понимаю, что там можно пилить даже год, не говоря EM> уже о десятках, при наличии полного комплекта открытых исходников. Ты объем этих исходников видел? Там где-то порядка гигабайта. Переписывать, конечно, нужно не все, но многое. AV>> Из того, что устройство использует Linux, и из того, что устройству AV>> нужно RT, совершенно не следует, что RT нужно реализовывать именно в AV>> Linux. EM> А какой смысл ставить на мелкое, одноплатное и узкоспециализированное EM> устройство еще и периферийные программируемые контроллеры, если EM> быстродействия основного процессора с избытком хватает для EM> обслуживания всей периферии? Производительность != быстродействие AV>> Потому что сделать "умную" периферию стало намного проще и дешевле. EM> Проще и дешевле, чем раньше, но ни разу не проще и не дешевле, чем EM> прицепить ее напрямую к GPIO (если, конечно, позволяют протоколы). GPIO - для совсем медленной периферии. Кнопку там опросить, или светодиодом помигать... AV>> Сам же написал про выделенные процессоры - чем тебе лошадьтроллер не? EM> Прежде всего тем, что для него нужен отдельный софт для разработки и EM> отладки, Те же gcc и gdb. И даже openocd можно один и тот же использовать. EM> отдельный проект для этого софта, нередко - и отдельный разработчик. Альтернатива: создать устройство наподобие писюшного флопа. Анекдот помнишь? - Папа, а правда, что Windows - многозадачная система? - Правда. - А покажешь, как это? - Сейчас, дискету доформатирую... Напомню, писюшный флоп - это чистейшее GPIO-устройство. Было. К счастью. EM> Ты-то сам много ли периферийных контроллеров станешь паять и EM> программировать, если тебе в любом встроенном линуксе дать EM> полноценный RT через GPIO/DMA, мягкий - для приложения, и EM> жесткий - для драйвера? :) Лично я эту поебень даже в ядро вкомпилячивать не буду. Ибо кроилово, традиционно ведущее к попадалову. -- Alexey V. Vissarionov aka Gremlin from Kremlin gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii ... Сверхзвуковая реактивная ступа с изменяемой геометрией помела --- /bin/vi |
#8
|
|||
|
|||
Реальное время в Linux
Eugene Muzychenko написал(а) к Zhenja Kaliuta в Nov 20 09:37:41 по местному времени:
Привет! 28 Nov 20 00:40, you wrote to me: ZK> если интересно, посмотри архивы. Я с Linux (и вообще *nix) знаком весьма поверхностно - замучусь разбираться там с нуля. :) Виндовое ядро более-менее знаю, с ним проще. Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать) --- GoldED+/W32-MSVC 1.1.5-b20170303 |
#9
|
|||
|
|||
Реальное время в Linux
Eugene Muzychenko написал(а) к Alexey Vissarionov в Nov 20 09:39:50 по местному времени:
Привет! 28 Nov 20 04:44, you wrote to me: AV> Ты объем этих исходников видел? Там где-то порядка гигабайта. Гигабайт - это весь линукс. Для реализации сколь угодно жесткого RT достаточно доработать лишь ядро, а это несколько десятков мегабайт максимум. AV> Переписывать, конечно, нужно не все, но многое. Многое-то зачем? Или там в ядре полно мест, где слишком долго держат блокировки, многократно ходят по одним и тем же спискам, и т.п.? AV> Производительность != быстродействие Сейчас я говорю исключительно о времени реакции на события, а оно пропорционально прежде всего тактовым частотам. AV> Напомню, писюшный флоп - это чистейшее GPIO-устройство. Не только писюшный - их таких немало было в те времена. Но интеллектуальный контроллер флопа с DMA появился еще при DOS, а анекдот про "истинно многозадачную систему Windows" описывает DOS-based версии винды. В любой NT флоп работал так же независимо, как и НDD. AV> Лично я эту поебень даже в ядро вкомпилячивать не буду. Ибо кроилово, AV> традиционно ведущее к попадалову. Ты не понял. Я не предлагаю делать программно то, что занимает достаточно много ресурсов (обмен большими массивами данных, формирование сигналов заданной формы и т.п.). Основная идея - это получение от ОС предсказуемого времени реакции на событие, определяемого только быстродействием железа и разумными накладными расходами на поиск обработчика прерывания, переключение контекста и т.п. Сейчас, насколько я понимаю, в линуксе этой предсказуемости нет, как и в винде. Событие по схеме "сигнал-прерывание-драйвер-процесс" в одном случае может быть передано процессу через 100 мкс, а в другом - через 5 или 20 мс. Даже если у тебя есть спецконтроллер для критичной ко времени периферии, который сам ведет обмен на микросекундных интервалах, в этих условиях ты не сможешь обеспечить бесперебойное взаимодействие линуксового процесса с контроллером на интервалах, меньших единиц-десятков миллисекунд. А железо позволяет делать это на интервалах даже в сотни микросекунд, но система, из-за недостатков ядра, этого не тянет. Неужто не досадно? Идея отнюдь не в том, чтобы регулярно дрочить регистры десятки-сотни тысяч раз в секунду, а в том, чтобы обработать разумное (максимум - сотни-тысячи в секунду) количество событий максимально близко к моментам их возникновения. Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать) --- GoldED+/W32-MSVC 1.1.5-b20170303 |
#10
|
|||
|
|||
Реальное время в Linux
Alexey Vissarionov написал(а) к Eugene Muzychenko в Nov 20 18:53:00 по местному времени:
Доброго времени суток, Eugene! 28 Nov 2020 09:37:40, ты -> Zhenja Kaliuta: ZK>> если интересно, посмотри архивы. EM> Я с Linux (и вообще *nix) знаком весьма поверхностно - замучусь EM> разбираться там с нуля. :) Виндовое ядро более-менее знаю, с ним EM> проще. Сравнил жопу с пальцем... Форточка - это единственная система с микроядром, дожившая до наших дней, и то благодаря постоянному вбухиванию денег. Все остальные микроядерные системы благополучно сдохли, ну да туда им и дорога. Все остальные (актуальные) ядра - монолитные: там есть только Ring0 и Ring3, соответствующие ядру (kernel) и пользовательскому окружению (userspace). Да, сразу отвечу и на стандартный вопрос про модули: при их загрузке (man insmod) происходит не запуск через execve(), а именно загрузка в адресное пространство ядра и установка указателей на функции, содержащиеся в модуле. То есть, ядро Linux - монолитное модульное. -- Alexey V. Vissarionov aka Gremlin from Kremlin gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii ... - Что вы чувствуете, когда стреляете в людей? - Отдачу. --- /bin/vi |