我想通过更改进程的调度策略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 +++
因此,甚至没有尝试进行设置。