LINUX.ORG.RU

SCHED_RR изменение временного интервала

 


1

1

Подскажите пожалуйста. Только начал изучать планирование процессов и 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, &param) == -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, &param) == -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


Под рутом запускай, или нужный capability бинарнику выстави.

mv ★★★★★
()

Запускаю да, под рутом, иначе вываливается с ошибкой. поставил ловушки чтоб посмотреть вывод nice(), значение меняется от -20 до 19. А вот вывод sched_rr_get_interval(0, &ts) один и тот же - 100 msec. Что для строки nice(-20) или nice(39).

salik
() автор топика

Linux notes POSIX does not specify any mechanism for controlling the size of the round-robin time quantum. Older Linux kernels provide a (nonportable) method of doing this. The quantum can be controlled by adjusting the process's nice value (see setpriority(2)). Assigning a negative (i.e., high) nice value results in a longer quantum; assigning a positive (i.e., low) nice value results in a shorter quantum. The default quantum is 0.1 seconds; the degree to which changing the nice value affects the quantum has varied somewhat across kernel versions. This method of adjusting the quantum was removed starting with Linux 2.6.24.

Linux 3.9 added a new mechanism for adjusting (and viewing) the SCHED_RR quantum: the /proc/sys/kernel/sched_rr_timeslice_ms file exposes the quantum as a millisecond value, whose default is 100. Writing 0 to this file resets the quantum to the default value.

anonymous
()
Ответ на: комментарий от anonymous

Кто то еще может это потвердить? А именно, что в ядре 3.2.0-4-686-pae не изменяется квант времени для процессов? Не нашел я в сети что то явного ответа.

salik
() автор топика
Ответ на: комментарий от anonymous

Спасибо, что ткнули. Согласен некорректно и коряво задал вопрос. Извиняюсь. Но незачем так реагировать.

salik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.