Вопрос по Linux preempt для программистов

Общие вопросы по операционным системам семейства Linux.

Вопрос по Linux preempt для программистов

Сообщение mycnc » 18 сен 2017, 16:43

Как правильно организовать основной цикл RT thread, чтобы он крутился с заданной частотой (например 2кГц) ?
Попробовал usleep(500) - появляются лаги в 2-5мс
myCNC - ЧПУ контроллеры и софт - http://www.pv-automation.com http://cnc42.com
Аватара пользователя
mycnc
Мастер
 
Сообщения: 418
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 293

Re: Вопрос по Linux preempt для программистов

Сообщение UAVpilot » 18 сен 2017, 17:30

clock_nanosleep и настройки шедулера смотри.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 14393
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3440
Медальки:
Настоящее имя: Сергей

Re: Вопрос по Linux preempt для программистов

Сообщение aftaev » 18 сен 2017, 22:28

mycnc писал(а):Как правильно организовать основной цикл RT thread

Для каких целей это нужно? Уже мощи МК не хватает?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 26173
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 4012
Медальки:

Re: Вопрос по Linux preempt для программистов

Сообщение mycnc » 19 сен 2017, 00:16

для 5 осевой фрезеровки текущей мощности достаточно -


А для 7 осевого робота с заданием кинематики и других интересных фишек, требующих вычислительных ресурсов - будет еще один контроллер.
myCNC - ЧПУ контроллеры и софт - http://www.pv-automation.com http://cnc42.com
Аватара пользователя
mycnc
Мастер
 
Сообщения: 418
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 293

Re: Вопрос по Linux preempt для программистов

Сообщение mycnc » 19 сен 2017, 03:29

UAVpilot писал(а):clock_nanosleep и настройки шедулера смотри.


настройки шедулера смотрел, без них не запускался RT-процесс
Но вот что означают значения приоритетов - не нашел

Для обычных процессов -20...20

тут стоит по умолчанию "80", причем htop показывает при этом "-81", но много это или мало - инфы не вижу.
nanosleep проблему не решил - в основном все хорошо, но при дисковых операциях или большом траффике по сети лагает.

Похоже у драйвера диска или сетки - приоритет еще выше и проснуться не дает.
myCNC - ЧПУ контроллеры и софт - http://www.pv-automation.com http://cnc42.com
Аватара пользователя
mycnc
Мастер
 
Сообщения: 418
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 293

Re: Вопрос по Linux preempt для программистов

Сообщение mycnc » 23 сен 2017, 18:25

сам себе отвечу, вдруг кому пригодится

Processes scheduled under one of the real-time policies (SCHED_FIFO,
SCHED_RR) have a sched_priority value in the range 1 (low) to 99
(high). (As the numbers imply, real-time threads always have higher
priority than normal threads.) Note well: POSIX.1 requires an
implementation to support only a minimum 32 distinct priority levels
for the real-time policies, and some systems supply just this
minimum. Portable programs should use sched_get_priority_min(2) and
sched_get_priority_max(2) to find the range of priorities supported
for a particular policy.
myCNC - ЧПУ контроллеры и софт - http://www.pv-automation.com http://cnc42.com
Аватара пользователя
mycnc
Мастер
 
Сообщения: 418
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 293


Вернуться в Прочие вопросы Linux

Кто сейчас на конференции

Зарегистрированные пользователи: aftaev, AlexKota19, Argon-11, artem44ik, Алексей2017, Belorez, Bing [Bot], bordyn, Darxton, error101, evgenyjp, Fiks, frezeryga, frolyar, Google [Bot], Google Feedfetcher, helpvits, Lafayette, Majestic-12 [Bot], Malyarka74, Mr. Mass, MX_Master, NickSon, nippozauma, NOKS, Nonstopich, Piligrym, Rezus666, sberbuh, Shkryab, Shtaketnik21, sima8520, Smlua, tsurika, verser, Yahoo [Bot], Yandex [bot], Yarrr, Краус, Тима, шпиндель

Поделиться

Reputation System ©'