Подскажите пожалуйста. Только начал изучать планирование процессов и sched_setscheduler. Сейчас заткнулся на политике SCHED_RR. Не могу изменить временной интервал для процессов.
Код такой, компилится без ошибок, а значения временного интервала sched_rr_get_interval(0, &ts) не изменяются.
int main(){
struct sched_param param;
struct timespec ts;
param.sched_priority = 99;
/* Необходим максимальный интервал времени */
nice(-20);
if (sched_setscheduler(0, SCHED_RR, ¶m) == -1) {
perror("sched_setscheduler failed\n");
return 3;
}
sched_rr_get_interval(0, &ts);
printf ("max timeslice = %ld msec\n", ts.tv_nsec/1000000);
/* выводит -> max timeslice = 199 msec */
/* Необходим минимальный интервал времени. Обратите также
* внимание, что аргументом для nice является "приращение",
* а не абсолютное значение. Таким образом, выполнение
* nice(39) приводит к работе с приоритетом nice +19
*/
nice(39);
if (sched_setscheduler(0, SCHED_RR, ¶m) == -1) {
perror("sched_setscheduler failed\n");
return 3;
}
sched_rr_get_interval(0, &ts);
printf ("min timeslice = %ld msec\n", ts.tv_nsec/1000000);
/* output -> min timeslice = 9 msec */
return 1;
}
Взято отсюда http://dmilvdv.narod.ru/Translate/ELSDD/elsdd_process_scheduling.html
работаю с Debian 7