ОСРВ Windows

ЖЕЛЕЗНЫЙ ТЕСТ



Прекрасные результаты производительности продемонстрированные питонскими приложениями в предыдущих тестах, волей-неволей заставляют подумать об их количественной оценке. Я не стал размениваться на консольный скрипт, а сразу решил попробовать написать универсальную утилиту для тестирования обмена по последовательному порту.
Утилита работает так – при нажатии кнопки Start программа коннектится к первому порту и отдельный поток запускает цикл и отправляет байт –останавливается и ждет приема, принимает – обрабатывает(смотрит сколько прошло времени и заполняет массив)- отсылает следующий, останавливается опять и так далее. В окошке Number of circles задается количество таких циклов(<5001). Значение постоянно посылаемого однобайтового числа задает задержку ответа в количестве тиков таймера T0 (AtMega8) — окошко Period in T0 ticks. Значение тика приблизительно равно 1.2 миллисекунды (в первой версии программы для таймера с софтовым делителем 8,(8МГц/1024/8)) во второй версии побыстрее, деления на 8 нет. Это что касается контроллера, при установке галки Mirror mode сама программа переходит в режим эмуляции микроконтроллера, коннектится ко второму порту и ждет (тоже цикл в потоке)прихода данных. Если пришел ненулевой байт то это и будет задержка до передачи байта обратно в миллисекундах (функция time.sleep(time_to_sleep)), а если мы отправляем нулевой байт, то при каждой отправке задержка инкрементируется от нуля до 255, то же самое и в случае микроконтроллера. Ну и при нажатии кнопки Show в матплотлиб рисуется график полученных значений от времени. Если запустить программу из питонской консоли, а не как экзешник двойным щелчком, то можно по выполнении ее закрыть и из консоли распечатать числовые значения полученных промежутков времени(print(ry)).
Ну и тест — основным является тест с независимым контроллером снаружи, тактовая 8МГц, делитель таймера 1024, дополнительного деления на 8 нет, скорость 57600, количество циклов(точек) 5000:

тут важна регулярность т. е.важно что картинка стабильно повторяется. Начало- нижняя часть каждого цикла выглядит так:
по вертикали количество тиков в задержке, по горизонтали измеренное время задержки в секундах(time.clock()), тут основным ограничивающим быстродействие фактором (при маленьком числе тиков) является скорость передачи(тут тики быстрые). В числах:

попробуем попередавать одно маленькое значение- стресс тест — Period in T0 ticks — 2, Number of circles -1000 -
при увеличении видно что единичные огрехи есть-) при небольшом увеличении задержки этого уже нет.

В числах:

т.е уже можно сказать, что при определенных условиях (нетяжелое приложение) и в течение определенного времени (пока не начала качать обновления-)))) винда вполне себе осрв причем довольно быстрая. Желающие проверить и попробовать приветствутся-)) Исходники в аттачах.
  • -1
  • 29 июля 2016, 14:21
  • basil
  • 3

Комментарии (27)

RSS свернуть / развернуть
Запусти еще какую-нить прогу на том же приоритете (желательно хоть что-то делающую, скажем, процентов на 10 загрузки ЦПУ) и оцени изменения в графике.
0
  • avatar
  • Vga
  • 29 июля 2016, 19:08
Ну в принципе здраво-) вообще это все делалось параллельно с остальной работой,- опен оффис, протеус болтался но не работал, вообще чего-то делалось. Вообще я думаю если процессор не будет сильно загружен ну процентов 20-30 все будет то же самое. Само приложение если посмотреть по ресурсам вообще ничего не увеличивает при своей работе. Вот хочу написать сейчас работает и ничего… действительно ничего-) загрузка 15 процентов процессора.стресс тест этот немного да -)дырки есть, но у меня совсем конкретно сейчас слабый компьютер с интегрированным видео, понятно, что даже если подвигаешь окна будет всплеск нагрузки на процессор. Попробую на более мощном как нибудь-)
0
вообще это все делалось параллельно с остальной работой,- опен оффис, протеус болтался но не работал, вообще чего-то делалось
Оно по большей части просто висит в функциях ожидания. А ты запусти чего-нить, что активно считает в своем таймслоте.
0
Запусти еще какую-нить прогу на том же приоритете
С загрузкой CPU, подозреваю, Windows справится неплохо (она неплохо умеет распределять потоки, а сейчас многоядерным процессором никого не удивишь). Хуже с дисковой подсистемой, Windows любит неожиданно создавать дисковую активность, при этом начинаются непонятные задержки. Непонятные они для меня потому, что эти задержки остаются даже если отключить своп, а программа в принципе не обращается к диску.

З.Ы. Касательно темы поднятой ТС
винда вполне себе осрв причем 

Нельзя быть «немного осрв», да и производитель даже не пытается позиционировать Windows как осрв.
0
Я намекаю на особенности планирования задач в винде, которые могут приводить к внезапной передаче управления другой программе на весьма заметный промежуток времени. Но да, на многоядерных системах эта проблема менее заметна.
Хотя WinLIRC от нестабильной работы не спасают ни приоритет Realtime, ни два ядра.
а программа в принципе не обращается к диску.
Не стоит забывать, что сама программа отображается на ехе-файл на диске как на своп. Ну и тупить оно может в дровах/ядре, подвешивая все остальное вызовом чего-нить в духе kSleep.
0
Не стоит забывать, что сама программа отображается на ехе-файл на диске как на своп

Да, я знаю об этой фите(что даже при отключении свопа файл, при запуске, мапится на память). Дело в том, что при дисковой активности тормозит даже пустой цикл (обвешенный volatile, дабы оптимизатор его не выбросил).
0
Это еще с DMA может быть связано, хотя по идее пустой цикл должен укладываться в кэш…
0
Да-да само собой, речь просто о том что для чего-нибудь лабораторного получить реакцию в реальном времени.
0
Ээ-э речь о
Нельзя быть «немного осрв»
-))
0
при определенных условиях (нетяжелое приложение) и в течение определенного времени
Если бы, да кабы… Это русская рулетка. Не понимаю практической ценности такого исследования.
+1
Вообще смысл как мне кажется может быть для каких либо лабораторных исследований, конечно не при одновременной работе с чем-нибудь тяжелым. Смысл в том что существовало(ет) мнение, что если винда даже стоит то в силу невообразимой сложности и непредсказуемости ее как операционной системы, невозможна детерминированная и воспроизводимая ее реакция по времени. Далеко ходить не надо такую чушь мне задвигали лабвьюшники мотивируя необходимость покупки отдельного компьютера с какими-то ихними платами реального времени за рекордное количество долларов. Я сталкивался с задачей управления двигателем в реальном времени надо было бы поотрабатывать алгоритм управления, пробовал из под протеуса и лабвью — ни шиша-) А вот теперь понятно под питоном бы все пошло просто отлично. И за бесплатно-)))
0
А вот теперь понятно под питоном бы все пошло просто отлично.
Или не пошло бы. Или винда решила бы проиндексировать диск как раз в момент переключения Н-моста и сделала бы феерверк. Или алгоритм идеально бы работал конкретно на этом компьютере и не работал бы будучи скопированным на другой. Подобное извращение на работе это не разработка а напрасная трата времени и денег работодателя. Вот дома, ради приколу разве что.
0
Речь в данном случае идет о лабораторном инструменте, находящемся под руками и быстро модифицируемом, со своими конечно закидонами, но в данном случае речь не идет о длительной эксплуатации, а о том чтобы просто попробовать, проверить идею, а делать уже потом нормально
0
WordOfDay: crappid prototyping. Когда стремишься сделать прототип побыстрее в ущерб надёжности, но тратишь больше времени на отладку и переделки этой херни, чем если бы сразу сделал нормально.
0
crappid prototyping
)))))) неплохо, неплохо)))) сами придумали? Очень удачное выражение))
0
Жизнь подсказала… Теперь стараюсь даже для одноразовых вещей делать всё по-серьёзному. Обычно так выходит быстрее.
0
Вы затронули настолько серьезный вопрос, что никак не мог удержаться-))) Мне кажется, что возможность что-либо попробовать немедленно и удволитроить( ))))) ) свое любопытство чрезвычайно важна, вплоть до того что если порог вхождения слишком высок(серьезный стенд), то просто можно перегореть и отправить идею в долгий ящик. Мы тут с Вами говорим видимо о разных вещах, я о чисто лабораторных чисто попробовательных, а Вы в свою очередь о прототипировании уже как первом шаге к выполнению уже практически эксплуатируемого прибора.
Я как-то обратил внимание что «зубрам» уже стыдно делать «несолидно» и это и задерживает получение результатов, и что хуже всего накладывает потихоньку ограничение на твой процесс мышления, заставляя создавать какие-то устройства, где можно все попробовать на подручном материале. В конце концов Фарадей говорил, что экспериментатор должен уметь поставить любой эксперимент при помощи веревочек и палочек-)))
0
))))Я даже стараюсь не говорить «отверстие», чтобы не вырабатывался приличный и не стыдный но заангажированный подход, а специально говорю непринужденное дырка -)))), что вызывало просто взрыв комментариев у конструкторов-))))
0
Быстрый хак чтобы попробовать цветной светодиод — экономия времени.
Быстрый хак чтобы подключить ЦАП к отладочной плате ПЛИС — очень дорогое горелое железо и потеря в несколько раз больше времени.

Работа с отладочным стендом где постоянно что-то отваливается, торчащие проводки замыкают, и надо держать больше одного щупа руками это ад и напрасная потеря времени. Проще заказать плату, а пока она делается написать софт или посмотреть котиков в интернете. Так быстрее.
+1
Да-да, Вы совершенно правы, конечно до идиотизма ситуацию с простотой доводить нельзя. И конечно оценивать свои усилия — цена/качество должно соответствовать, а то будешь сам себе злой Буратино)))
0
Есть немало приложений, где «по быстрому» просто не получится попробовать. Скажем, «пощупать» новые чипы DC-DC преобразователей можно только на нормально разведенной плате.
0
Хороший пример. Можно конечно безногий чип распаять на паучке и потом на макетке, но результаты будут более чем дерьмовые и нормально характеристики не протестируешь. А сделать сразу грамотную плату окупится десятикратно.
0
Windows CE (так же известна как WinCE) — это вариант операционной системы Microsoft Windows для наладонных компьютеров, смартфонов и встраиваемых систем.
Сегодня Windows CE (Compact Edition / Compact Embedded) не является «урезанной» версией Windows для настольных ПК, она основана на совершенно другом ядре и является операционной системой реального времени с набором приложений, основанных на Microsoft Win32 API.
0
и является операционной системой реального времен
Жесткого или мягкого?
0
мелко-мягкого :)
+1
уже 20 лет назад работала, в том числе, на 64-х битных процессорах MIPS… затем на АРМ
На эту панель можно было загрузить эмулятор ПЛК WinAC и панель могла работать в качестве панельного ПЛК.

0
Даже не знал, что у них есть всамделишная осрв, что-нибудь есть почитать по этому поводу? Ну там книжки или еще чего-нибудь?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.