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已解决问题