• cpu进程调度---RT Throttling【转】


    转自: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

  • 相关阅读:
    Linux的进程线程及调度
    Linux-485收发切换延迟的解决方法
    FFmpeg内存IO模式(内存区作输入或输出)
    ffplay源码分析7-播放控制
    ffplay源码分析6-音频重采样
    ffplay源码分析5-图像格式转换
    ffplay源码分析4-音视频同步
    ffplay源码分析3-代码框架
    ffplay源码分析2-数据结构
    ffplay源码分析1-概述
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/5794424.html
Copyright © 2020-2023  润新知