chrt 对改变调度策略没有影响

chrt 对改变调度策略没有影响

我想通过更改进程的调度策略chrt,但是,如下所示,它对 systemd 进程没有影响。这是一个例子,我也尝试了其他过程。它仍然是 SCHED_OTHER。

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1862 mahmood   20   0   24980  11908   9768 S   5,9   0,1   0:00.09 systemd


$ sudo chrt -p 1862
pid 1862's current scheduling policy: SCHED_OTHER
pid 1862's current scheduling priority: 0
$ sudo chrt -f -p 1862
pid 1862's current scheduling policy: SCHED_OTHER
pid 1862's current scheduling priority: 0
$ sudo chrt -p 1862
pid 1862's current scheduling policy: SCHED_OTHER
pid 1862's current scheduling priority: 0

对此有什么想法吗?

答案1

$ sudo chrt -f -p 1862

根据说明,您没有使用 chrt man chrt

chrt -r -p 优先级 PID

当改变调度策略时,优先级参数为不是选修的。用于chrt --max检查可接受值的范围。

$ chrt -p 21549
pid 21549's current scheduling policy: SCHED_OTHER
pid 21549's current scheduling priority: 0
$ chrt -f -p 10 21549
$ chrt -p 21549
pid 21549's current scheduling policy: SCHED_FIFO
pid 21549's current scheduling priority: 10

用于chrt -o -p 0 21549恢复原始 SCHED_OTHER 策略 + 优先级。

答案2

坏消息:这可能是一个chrt错误。

sudo strace -e /sched -o /tmp/strace chrt -f -p 94495

仅显示对 的系统调用sched_getattr,但不显示对 的系统调用sched_setattr,这是必要的:

cat /tmp/strace
sched_getattr(94495, {size=56, sched_policy=SCHED_OTHER, sched_flags=0, sched_nice=0, sched_priority=0, sched_runtime=0, sched_deadline=0, sched_period=0, sched_util_min=0, sched_util_max=0}, 56, 0) = 0
+++ exited with 0 +++

因此,甚至没有尝试进行设置。

相关内容