Перейти к содержанию
    

Максимальная возможная реалтаймовость под Win.

Имхо, из ядра всё должно быть не сложно. В современных архитектурах в локальном APIC есть встроенный 32-битный таймер. Разрешающая способность там вроде очень высокая, лень смотреть ДШ. Ну только ISR не имеет права длиться дольше 20мкс, иначе бсод. Ну DPC и так далее... Мне кажется, для тонкого и аккуратного использования, всё реально. 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.08.2024 в 09:03, dxp сказал:

Бенчмарки можно где-нить увидеть?

https://lemariva.com/blog/2019/09/raspberry-pi-4b-preempt-rt-kernel-419y-performance-test

ну и у меня на rpi cm3+ с preempt_rt реакция в программе на прерывание укладывается в 100 мксек по осцилографу

Изменено пользователем gridinp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/12/2024 at 11:08 AM, gridinp said:

ну и у меня на rpi cm3+ с preempt_rt реакция в программе на прерывание укладывается в 100 мксек по осцилографу

есть специальные тестовые фермы с разными процессорами с полным описанием конфигурации как аппаратной так и програмной

https://www.osadl.org/Continuous-latency-monitoring.qa-farm-monitoring.0.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Существуют программные надстройки для винды и не только

которые обеспечивают реалтайм,

к сожалению видел лет 10 назад и не могу указать пруфы =\

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала откройте своё понимание слова риалтайм, а потом уже можно и советов ожидать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если гарантированные 125 мкс реакции для вас не реалтайм, я молчу. это был семинар, где все разжевывалось под Win7. Там была реализация 2-in-1 одновременно работала подсистема ОСРВ и паралельно с ней на процессоре крутилась винда. Немного удивляет подход автора (управление потоком в реалтайме), но интересно почитать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здраствуйте.

Сам сталкивался с проблемами когда винда не обеспечивала нужнные временные интервалы. 

В связи с этим хочи поделиться радикальной идеей о которой давно думал.

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

После завершения задачи восстанавляваем рабочее состояние системы.

Я понимаю что драйвера периферии с которой работаем это отдельные процессы и поэтому наш драфвер должен быть

монолитным. Тоесть сожержать в себе и код лля работы с периферией для воздействия с внешним миром.

Где бы почитать про такой радикальный подход?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 минут назад, Sh@dow сказал:

Где бы почитать про такой радикальный подход?

MS-DOS или режим MS-DOS вполне обеспечат такой подход.

Современные компьютеры и Windows - нет.

А в чём идея-то? Windows 10 не даст так просто отключить все свои службы, процессы, программы и драйверы.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, khach said:

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

SetThreadAffinityMask 

https://learn.microsoft.com/en-us/windows/win32/procthread/multiple-processors

Эта установка иногда дает серьезный прирост производительности.

Я кстате заметил что винда иногда перебрасывает потоки с одного ядра на другое.

Ходят легенды, чтоб ядра равномерно прогревались....

Изменено пользователем Sh@dow

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, Sh@dow сказал:

SetThreadAffinityMask 

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

https://learn.microsoft.com/en-us/windows/iot/iot-enterprise/soft-real-time/soft-real-time-application

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, Sh@dow сказал:

Я кстате заметил что винда иногда перебрасывает потоки с одного ядра на другое.

Ходят легенды, чтоб ядра равномерно прогревались....

Это обычное дело на современных многоядерниках -- SMP (Synchronous Multiprocessing), на всех, где есть аппаратная когерентность кешей L1. Это повышает производительность: например, одно ядро выполнляло поток (процесс), по логике программы нужно было остановить выполнение (ожидание события, слип и т.п.), далее это ядро переключилось на другой поток (процесс), в какой-то момент возникает событие, которое ждал тот прерванный поток (процесс), но выполнявшее его ядро в данный момент занято, и прерывать его будет неэффективно, а вместо этого пробуждающийся поток (процесс) подхватывает другое ядро -- за счёт когерентности кэшей оно сможет продолжить работу почти так же эффективно, как и то, которое выполняло поток первым.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[QUOTE = A.V.Avtomat]

MS-DOS или режим MS-DOS вполне обеспечат такой подход.

Современные компьютеры и Windows - нет.

А в чём идея-то? Windows 10 не даст так просто отключить все свои службы, процессы, программы и драйверы.

[/QUOTE]

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

обратно. Не вижу проблемы в принципе. Главное препятствие это то что алгоритм не только не задокументирован 

но и отсутствует публичный доступ к API планировщика.

Это уверен можно сделать в Linux правда надо серьезно погрузиться в код ядра.

По идее дальше всех в этом должны продвинуться высокочастотные торгаши на биржах.Это как раз то что им очень нужно. Попадались когда то публикации на эту тему но понятно что никто просто так не опубликует решение.

Автор поднял интересную тему но поскольку не указал чем собирается управлять то и ответа нет.

Хотя правильный ответ такой.Поскольку реалтайм это не про время а про гарантии а поскольку гарантий нет никаких то и windows для этого дела не пригоден.

 

[QUOTE = dxp]

Это обычное дело

[/QUOTE]

 

Спасибо.Это разумный подход со стороны разработчика.

Понятно почему microsoft не рекомендует вручную привязывать потоки. Чтоб не тормозить работу

других приложений.

Изменено пользователем Sh@dow

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...