首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么低优先级进程会影响高优先级进程的延迟?

为什么低优先级进程会影响高优先级进程的延迟?
EN

Stack Overflow用户
提问于 2020-03-13 14:14:41
回答 1查看 126关注 0票数 1

我已经通过循环测试测试了rt进程的延迟。并发现,当启动几个优先级较低的rt进程(优先级为40)时,高优先级rt进程的延迟会越来越大。我无法解释。

循环测试是rt-测试的一个程序.https://github.com/jlelli/rt-tests/tree/master/src/cyclictest

Cyclictest测量计时器过期时和设置计时器的线程实际运行之间的延迟。它可以在等待特定时间间隔(t1)之前获取时间快照,然后在计时器完成(t2)之后再进行另一次时间快照,然后将理论唤醒时间与实际唤醒时间(t2 -(t1 + sleep_time))进行比较。这个值是计时器唤醒的延迟。

自行车测试者的假密码:

代码语言:javascript
运行
复制
clock_gettime(CLOCK_MONOTONIC, &t1);
next = t1 + 1000;
clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &next, NULL);
clock_gettime(CLOCK_MONOTONIC, &t2);
latency = t2 - next;

测试命令是( -p80表示测试线程的优先级为80,-n意味着使用clock_nanosleep等待特定的时间间隔):./cyclictest -p80 -n

令人不安的过程很简单:

代码语言:javascript
运行
复制
struct sched_param schedp;
schedp.sched_priority = 40;
sched_set_scheduler(0, SHED_FIFO, &schedp);
while(1) {
    srand(time(0));
    while(j++ < rand()%1000000);
    usleep(10);
}

在Linux内核中,无论存在多少较低优先级的进程,只要高优先级进程是可运行的,它就会立即执行。

有人能解释为什么启动一些低优先级进程会影响高优先级进程的延迟吗?

EN

Stack Overflow用户

发布于 2022-04-28 12:40:04

首先,我会通过将补丁应用到Linux内核中来确保更高的RT能力。下一步,如果我是对的,所有计时器都由默认优先级较低的softIRQ守护进程(参见ps -e | grep soft)控制。这就是为什么您的核心增加它的原因,例如,通过chrt --fifo --pid 90 9对cpu 0。另外,尽可能地关闭干扰的printk (例如,realtime.

  1. Third,),因为它严重破坏了sysctl kernel.printk='3 3 3 3'过期的计时器,使用创建定时器的任务的继承优先级运行它们的调用。这就是为什么要确保对其使用SCHED_OTHER以外的调度模式(例如SCHED_RR或SCHED_FIFO),并设置足够高的优先级。SCHED_OTHER线程没有实时优先级,因为对于这些线程,您只需使用在Linux内核优先级20和-20 AFAIRC.

之间的很好的级别。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60672077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档