не совсем уверен, что туда пишу, потому что тема пограничная
есть у меня железка с линуксом на борту , FS построена на busybox. моя программа сделит за пином через poll gpio на который подаются импульсы с определённой частотой, одна из функций это замер времени между импульсами, импульсы подаю с генератора, так что в их стабильности можно быть уверенным, но есть особенность - если запускаю программу из консоли, то она работает стабильно и дельта измерений весьма мала (1-2 миллисекунд при общем периоде в 100 миллисекунд), если же запускаю из /etc/init.d/rcS , то дельта измерений подскакивает до десятков миллисекунд
разница между пуском своей программы из rcS и консоли
nice'ность процесса не повышена?
провёл эксперименты с nice, renice, ситация улучшилась, но до пуска из консоли не дотягивает, так же не дотягивает до пуска из консоли введение программы в демонизм
можно немного подробнее о системе?
В порядке умозрительных предположений:
может какая-то магия шедулера учитывающего cgroups задействована?
или сам шедулер какой-то больно мудрёный?
какой CONFIG_HZ? и можно ли будет пересобрать ядро?
может где-то ошибка и программа почему-то остаются висеть на процессоре вместо того, чтобы уходить бекграунд?
провёл эксперименты с nice, renice, ситация улучшилась, но до пуска из консоли не дотягивает
на все -20 выкручивал?
можно немного подробнее о системе?
железка Cortex A8 процессор TI AM3517 ядро 2.32, ФС собирал на основе крайней версии Busybox, тоесть кроме него и моего софта ничего нет
и можно ли будет пересобрать ядро?
можно конечно, только боюсь той же версии
как бы это ещё проверитьможет где-то ошибка и программа почему-то остаются висеть на процессоре вместо того, чтобы уходить бекграунд?
в обе стороны крутил, сейчас попробую поиграться приоритетами процессовна все -20 выкручивал?
в ПО есть три треда - один отвечает за обмен по эзернет, второй следит за пином следующим образом, третий по срабатыванию от пина делает работу.
Признаться, метод слежения за изменением GPIO мне самому не очень нравится, поэтому сейчас рассматриваю вариант слежения за изменениями через модуль gpio_keys, но пока не до конца вкурил как с ним работать
решил отслеживать состояние пина через самописный модуль, всё можно сказать идеально - разница между отсчётами не более пол миллисекунды