预定截止日期/期限是否有最低 100 美元的限制?

问题描述 投票:0回答:1

我正在关注 https://www.kernel.org/doc/Documentation/scheduler/sched-deadline.txt 中的 sched-deadline 页面中的 Minimal main。 来自手册

此外,在目前的实施下,所有 参数值必须至少为 1024(即刚刚超过一微秒,这是实现的分辨率),并且小于 2^63。如果这些检查中的任何一个失败,sched_setattr(2) 都会失败并显示错误 EINVAL。

但是,当我在截止日期/期间输入任何小于 100*000 (ns)(例如 99 *1000)的值时,我会收到错误:

sched_setattr:参数无效

这是我的代码,从 sched-deadline 网页中的

Minimal-main 更改为:

/* This creates an execution_time/99 us reservation */ attr.sched_policy = SCHED_DEADLINE; attr.sched_runtime = execution_time + 1024 ; attr.sched_period = attr.sched_deadline =99*1000 ; ret = sched_setattr(0, &attr, flags); printf("We have called sched_setattr, and ret value is:%d\n", ret); if (ret < 0) { done = 0; perror("sched_setattr"); exit(-1); }
我在这里缺少什么?

linux-kernel real-time sched-deadline
1个回答
0
投票

root/kernel/sched/deadline.c 说:

DL周期默认限制;在顶端,我们防范小 util 任务仍然获得非常长的有效运行时间,在底端,我们防范计时器 DoS。

static unsigned int sysctl_sched_dl_period_max = 1 << 22; /* ~4 seconds */ static unsigned int sysctl_sched_dl_period_min = 100; /* 100 us */
    
© www.soinside.com 2019 - 2024. All rights reserved.