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

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

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

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

Как правильно организовать основной цикл RT thread, чтобы он крутился с заданной частотой (например 2кГц) ?
Попробовал usleep(500) - появляются лаги в 2-5мс
Аватара пользователя
mycnc
Мастер
 
Сообщения: 525
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 343

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

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

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

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

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

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

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

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

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

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


А для 7 осевого робота с заданием кинематики и других интересных фишек, требующих вычислительных ресурсов - будет еще один контроллер.
Аватара пользователя
mycnc
Мастер
 
Сообщения: 525
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 343

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

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

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


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

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

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

Похоже у драйвера диска или сетки - приоритет еще выше и проснуться не дает.
Аватара пользователя
mycnc
Мастер
 
Сообщения: 525
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 343

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
Мастер
 
Сообщения: 525
Зарегистрирован: 03 июл 2011, 02:01
Откуда: СПб
Репутация: 343


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

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

Зарегистрированные пользователи: a_l_e_x_Z, aftaev, aldemm, Argon-11, Александр Д, Bandersnatch, bass, Bing [Bot], CNC-Logic, error101, evgenymcp, frezeryga, goldmen8, Google [Bot], Google Feedfetcher, kang2k, kip96, Lafayette, Lunatic, madwar, Mehobr, meruslan, mikro3v, Mr. Mass, msa65, NickSon, nik1, nkp, OlegS, PKM, plotik, ryno1984, selenur, sergay, Shah, sima8520, solo, SVP, Taganrog, Timur.Salikhov, UmkaAP, uralpt, VVIshen, web123456, Yahoo [Bot], Yandex [bot], Никита Александрович

Поделиться

Reputation System ©'