Hi!
Проблема в следующем:
Программа осуществляет опрос устройства.
Если запускаем как обычно, то интервал опроса ~ 12 мс и top показывает CPU 10-12%
Если же как демон то период опроса возрастает в 10 раз и top — cpu 1-2 %
Потокам устанавливаю приоритет
sched_param sp;
sp.__sched_priority = get_sched_priority_max();
pthread_setschedparam(pthread_self,SCHED_FIFO,&sp);
Здравствуйте, dostap, Вы писали:
D>Hi! D>Проблема в следующем: D>Программа осуществляет опрос устройства. D>Если запускаем как обычно, то интервал опроса ~ 12 мс и top показывает CPU 10-12% D>Если же как демон то период опроса возрастает в 10 раз и top — cpu 1-2 % D>Потокам устанавливаю приоритет D>sched_param sp; D>sp.__sched_priority = get_sched_priority_max(); D>pthread_setschedparam(pthread_self,SCHED_FIFO,&sp);
Реально нужно setpriority(2) использовать (renice).
setchedparam не работает или работает только от рута.
D>daemon запускается стандартно: D>int pid = fork(); D>if(!pid) D>{ D>setsid(); D>chdir("/"); D>close(STDERR_FILENO) D>... D>}
Здравствуйте, fk0, Вы писали:
Спасибо за советы.
fk0> Реально нужно setpriority(2) использовать (renice). fk0>setchedparam не работает или работает только от рута.
так он и так из под рута запускается ...
D>>daemon запускается стандартно: D>>int pid = fork(); D>>if(!pid) D>>{ D>>setsid(); D>>chdir("/"); D>>close(STDERR_FILENO) D>>... D>>}
fk0> fork два раза нужно, чтоб зомби не плодились.
Так и делаю. Первый fork запускает слежение и перезапуск в случае чего.
Второй собственно рабочее тело демона