![chrt 无法设置策略 - 参数无效](https://linux22.com/image/205126/chrt%20%E6%97%A0%E6%B3%95%E8%AE%BE%E7%BD%AE%E7%AD%96%E7%95%A5%20-%20%E5%8F%82%E6%95%B0%E6%97%A0%E6%95%88.png)
Fedora 和 Garuda 都会发生这种情况。以下是错误消息示例:
$ sysctl kernel/sched_deadline_period_min_us kernel/sched_rt_period_us kernel/sched_rt_runtime_us
kernel.sched_deadline_period_min_us = -1
kernel.sched_rt_period_us = -1
kernel.sched_rt_runtime_us = -1
$ chrt --deadline -P 50000 --pid 0 2236118
chrt: failed to set pid 2236118's policy: Invalid argument
$ sysctl kernel/sched_deadline_period_min_us kernel/sched_rt_period_us kernel/sched_rt_runtime_us
kernel.sched_deadline_period_min_us = -1
kernel.sched_rt_period_us = -1
kernel.sched_rt_runtime_us = -1
# chrt -d -P 50000 0 yes
chrt: failed to set pid 0's policy: Invalid argument
正如你所看到的,找到了解决方案这里不管用。该cgconfig
服务不存在,因此第二个答案无关紧要。
我strace
在两次调用中都运行了权限,这也不是问题。他们都失败了sched_setattr
:
sched_setattr(2236118, {size=56, sched_policy=SCHED_DEADLINE, sched_flags=0, sched_nice=0, sched_priority=0, sched_runtime=50000, sched_deadline=50000, sched_period=50000, sched_util_min=0, sched_util_max=0}, 0) =-1 EINVAL (Invalid argument)
sched_setattr(0, {size=56, sched_policy=SCHED_DEADLINE, sched_flags=0, sched_nice=0, sched_priority=0, sched_runtime=50000, sched_deadline=50000, sched_period=50000, sched_util_min=0, sched_util_max=0}, 0) = -1 EINVAL (Invalid argument)
我也查过sched_setattr 的联机帮助页。据他们称,所有参数都是可以接受的。
chrt
版本:
chrt from util-linux 2.38
chrt from util-linux 2.37.4
答案1
设置kernel.sched_deadline_period_min_us
为50已解决问题