转自:http://book.2cto.com/201302/16291.html

RT Throttling是对分配给实时进程的CPU时间进行限制的功能。使用实时调度策略的进程由于bug等出现不可控错误时,完全不调度其他进程,系统就会无响应。通过限制分配给实时进程的每个单位时间的CPU时间,就可以防止使用实时调度策略的进程出现bug。

还可以指定单位时间内分配多少CPU时间给实时进程。标准设置的单位时间是1秒,CPU分配时间是0.95秒,非实时进程每1秒也可以使用CPU 0.05秒。

可是对分配给实时进程的CPU时间进行限制,会不会对实时处理造成影响呢?答案是不会。正如在关于实时性的介绍中提到的,对某个处理使用实时策略,是为了满足实时限制,即在一定时间内完成处理。如果对实时性有要求的进程占用CPU时间,就不能实现实时性。

为使用实时调度策略的进程的处理分配所必需的或实时限制量的CPU时间,就可以防止系统的实时进程出现不可控错误等意外情况。

系统的整体设置

整个系统的CPU时间设置可以使用sysctl来获取、设置。最近的内核都可以通过sysctl来限制实时进程能够使用的CPU时间。

下列为获取当前值的例子。这个例子中使用的是标准设置,单位时间为1秒,CPU分配时间为0.95秒。
$ sysctl -n kernel.sched_rt_period_us
1000000
$ sysctl -n kernel.sched_rt_runtime_us
950000

设置示例

要将CPU分配时间改为0.9秒,可以执行下列操作。
# sysctl -w kernel.sched_rt_runtimes_us=900000

另外,将CPU分配时间指定为–1,对实时进程的CPU时间限制就会消失。这与内核导入该功能之前的行为是一样的。
# sysctl -w kernel.sched_rt_runtime_us=-1

当然,也可以从proc文件系统存取。
/proc/sys/kernel/sched_rt_period_us
/proc/sys/kernel/sched_rt_runtime_us

当CONFIG_RT_GROUP_SCHED有效时,受到Cgroup设置值的限制,不能进行与Cgroup中的有效值相矛盾的设置。但是在这里,将sched_rt_runtime_us设置为–1,是用来使RT Throttling失效的设置。

一般来说,sysctl中的设置仅用于有效(启用)与无效(关闭)的切换,单个设置需要使用Cgroup来进行。

Cgroup中的设置

RT Group Scheduling是Cgroup的子系统。要使用RT Group Scheduling,必须启用CONFIG_RT_GROUP_SCHED。可以与其他Cgroup一样通过cgroup文件系统进行设置(参考Hack #7)。
# mount -t cgroup cgroup /cgroup

与RT Group Scheduling相关的项目有下面两个。可以对每个分组分别设置RT throttling的单位时间与CPU分配时间。
cpu.rt_period_us
cpu.rt_runtime_us

cpu进程调度---RT Throttling【转】的更多相关文章

  1. RT throttling分析【转】

    转自:https://blog.csdn.net/u012728256/article/details/72639612 Linux上调度策略为SCHED_FIFO的实时进程是根据优先级抢占运行的.当 ...

  2. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #9 RT Group Scheduling 与RT Throttling

    HACK #9 RT Group Scheduling 与RT Throttling 本节介绍对实时进程所使用的CPU时间进行限制的功能RT Group Scheduling和RT Throttlin ...

  3. 进程分析之CPU

    进程分析之CPU 进程分析之CPU 本文转载自:https://github.com/ColZer/DigAndBuried/blob/master/system/cpu.md 在<进程分析之内 ...

  4. Linux进程组调度机制分析【转】

    转自:http://oenhan.com/task-group-sched 又碰到一个神奇的进程调度问题,在系统重启过程中,发现系统挂住了,过了30s后才重新复位,真正系统复位的原因是硬件看门狗重启的 ...

  5. Linux进程管理 (9)实时调度类分析,以及FIFO和RR对比实验

    关键词:rt_sched_class.SCHED_FIFO.SCHED_RR.sched_setscheduler().sched_setaffinity().RR_TIMESLICE. 本文主要关注 ...

  6. 《Linux内核精髓:精通Linux内核必会的75个绝技》目录

    1章 内核入门HACK #1 如何获取Linux内核HACK #2 如何编译Linux内核HACK #3 如何编写内核模块HACK #4 如何使用GitHACK #5 使用checkpatch.pl检 ...

  7. 【原创】有利于提高xenomai 实时性的一些配置建议

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有错误,欢迎指正. @ 目录 一.影响因素 1.硬件 2.BISO(X86平台) 3.软件 4. 缓存使用策略与GPU 二.优化措施 1. BIO ...

  8. yarn的调度策略

    一. yarn的资源分配模型 无论先进先出调度器,容量调度器,还是公平调度器,他们的核心:资源分配模型是一样的. 调度器维护着多个队列的信息,用户可以向任意一个或多个队列提交job.每次NodeMan ...

  9. Documentation/sched-bwc.txt 的中文翻译

    Chinese translated version of Documentation/sched-bwc.txt If you have any comment or update to the c ...

随机推荐

  1. JavaScript实现,判断一个点是否在多边形内

    //定义点的结构体 function point(){ this.x=0; this.y=0; } //计算一个点是否在多边形里,参数:点,多边形数组 function PointInPoly(pt, ...

  2. ZooKeeper -- 分布式开源协调服务

    ZooKeeper是一个为分布式应用所设计的开源协调服务,适用于大型的分布式系统,可以提供统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等服务.ZooKeeper支持Java和C两种编程 ...

  3. 设计模式之 -- 单例模式(Singleton)

    单例模式是一种常用的软件设计模式,通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问. 使用说明 1.使用时机  在某些系统中某些对象最多只能存在一个,例如Windows中只能打开一个 ...

  4. python password输入

    1.linux下用getpass,没有星号提示,符合linux风格 from getpass import getpasspwd = getpass('Enter the password: ') 2 ...

  5. hibernate反向生成映射文件报错

    报错原因:可能是你的数据库里的某个表没设置主键.

  6. objective-c底层: runtime机制

    runtime是oc的真面目.oc底层的一套c语言API. unsigned int count; //获取属性列表 objc_property_t *propertyList = class_cop ...

  7. Sublime 不自动打开上次未关闭的文件 设置方法

    { "font_size": 17, "hot_exit": false, "remember_open_files": false, &q ...

  8. http://codeforces.com/contest/555/problem/B

    比赛时虽然贪了心,不过后面没想到怎么处理和set的排序方法忘了- -,其实是和优先队列的仿函数一样的... 比赛后用set pair过了... #include <bits/stdc++.h&g ...

  9. Ini文件操作函数

    /// <summary> /// Copies a string into the specified section of an initialization file. /// &l ...

  10. 20145207 《Java程序设计》第4周学习总结

    前言 又到了大家最喜欢的前言时间,哈哈哈.我这个人啊,就是比较爱闲聊.正式在学校呆的第一天时间就在这里敲代码,自己都觉得自己伟大.不过好无聊呀....这周的内容说实话讲我还是挺感兴趣的,因为书上的例子 ...