如何设置每个进程/线程的SCHED_RR时间片或时间量?

如何设置每个进程/线程的SCHED_RR时间片或时间量?

具有策略的线程的时间片(也称为时间量程)SCHED_RR可以根据sched_rr_get_interval 手册页可以使用获得

int sched_rr_get_interval(pid_t pid, struct timespec *tp);

这表明可以为不同的进程/线程设置不同的值。根据相同的手册页,但是,可以使用 调整该值(从内核 3.9 起)/proc/sys/kernel/sched_rr_timeslice_ms,但是,这似乎不允许以合理的方式更改每个线程的配置。

其他处理实时调度的地方也没有提供如何为SCHED_RR每个线程设置线程时间片的信息(男人基督,人 sched_setattr,SO:如何知道linux调度程序的时间片?)。

是否可以为每个SCHED_RR线程单独设置时间片?如果是这样,首选方法是什么?

答案1

根据您链接的手册页,sched_rr_get_interval符合 POSIX.1-2001 和 POSIX.1-2008 标准。因此,POSIX 标准允许不同的进程具有不同的时间片值,但正如同一手册页所述:“POSIX 没有指定任何用于控制循环时间量大小的机制。”

这可能就是为什么没有已知的方法来设置 Linux 中每个进程或线程的循环时间片值的原因。正如您所指出的,据我所知并发现,只能使用 全局更改时间片/proc/sys/kernel/sched_rr_timeslice_ms

相关内容