首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在实时linux中更改循环时间量

无法在实时linux中更改循环时间量
EN

Stack Overflow用户
提问于 2011-07-20 22:15:24
回答 2查看 3.1K关注 0票数 3

我正在SUSE Linux Real Time上编写一个C++程序,并试图收集有关其循环调度(RR)调度策略的计时统计信息。我可以通过以下方式将策略设置为RR

代码语言:javascript
复制
#include <sched.h>
...
struct sched_param sparms;
sparms.sched_priority = 99;
if (sched_setscheduler(0, SCHED_RR, &sparms) < 0){
   perror("sched_setsched");
   exit(1);
}

并且能够通过sched_rr_get_interval()确定时间量。操作系统文档指出,时间段可以通过进程的nice值进行更改。然而,这样做没有任何效果。我通过nice()更改了nice值,并确认确实通过getpriority()更改了该值,但sched_rr_get_interval()同时返回。有人知道是怎么回事吗?

编辑:添加了下面的代码。setpriority()不起作用。

代码语言:javascript
复制
...
#include <stdio.h>
#include <unistd.h>
#include <sys/resource.h>
...
// Set scheduler to RR
struct sched_param sparms;
sparms.sched_priority = 99;
if(sched_setscheduler(0, SCHED_RR, &sparms) < 0){
    fprintf(stderr, "Error setting thread scheduling policy & priority.");
    exit(-1);
}
timespec qtm;
sched_rr_get_interval(0, &qtm);
fprintf(stderr, "Time quantum(thread 1): %lds %ldns.\n", qtm.tv_sec, qtm.tv_nsec);
fprintf(stderr, "Current nice value: %d\n", getpriority(PRIO_PROCESS, 0));
if(nice(90) < 0) fprintf(stderr, "Error setting time quantum.\n");
//setpriority(PRIO_PROCESS, 0, 10);
fprintf(stderr, "New nice value: %d\n", getpriority(PRIO_PROCESS, 0));
sched_rr_get_interval(0, &qtm);
fprintf(stderr, "New time quantum(thread 1): %lds %ldns.\n", qtm.tv_sec, qtm.tv_nsec);
...

编辑:操作系统版本: 2.6.33.7-rt29-0.5-rt

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-22 23:27:22

似乎已经从Linux实时调度程序中删除了控制循环时间段的功能。

查看源文件(kernel/sched_rt.c),当时间片计数器在task_tick_rt()中过期时,它会恢复为一个常量值(DEF_TIMESLICE,定义为0.1s),因此无法动态更改它。get_rr_interval() (由sched_rr_get_interval()调用)始终返回该常量值

如果您需要较小的时间片,我猜您必须自己使用先进先出调度程序并在适当的时间调用sched_yield(),或者修改内核以满足您的需求。

票数 4
EN

Stack Overflow用户

发布于 2018-10-23 08:23:04

在Linux内核版本3.9和更高版本中,可以使用/proc/sys/ kernel /sched_ RR _timeslice_ms读取和更改rr量程

如果你使用的是2.6.24或更高版本的内核,你就不能使用“很好”的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6763386

复制
相关文章

相似问题

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