zoukankan      html  css  js  c++  java
  • 啥叫sched-domain

    这周问过公司里专家,说cpu-load是说CPU的计算能力,但是从代码实在不知道cpu-load说的是啥!

    SD_SHARE_CPUPOWER 0X8000  domain的成员共享cpu power!

    SD_SHARE_PKG_RESOURCES  domain成员共享pkg resource!

    为什么要引入rt scale down的问题?

    e9e9250bc78e7f6342517214c0178a529807964b

    这个commit中的解释是:

    sched: scale down cpu_power due to RT tasks

    keep an average of amount of time spent on RT time and use the fraction to scale down the cpu_power for regular task,这个是

    -------------------------------

    sched_rt_avg_update 的巧妙计算方法:

    static inline void sched_rt_avg_update(struct rq *rq, u64 rt_delta)

    {

      rq->rq_avg += rt_data;

      sched_avg_update(rq);

    }

    void sched_avg_update(struct rq *rq)

    {

      s64 period = sched_avg_period();

      while(s64(rq->clock - rq->age_stamp) > pereriod)) {

        rq->age_stamp += period;

        rq->rt_avg /= 2;

    }

    详细分析下上面的公式发生了啥,

    while循环不断在把age_stamp往rq->clock上靠,但是

    }

    --------------------------------

    这个值在初始化sched-group的时候用的最多,是说smt关系的看看cpu的能力到底是多少吗?

    http://cache.baiducontent.com/c?m=9d78d513d98210fc06ba837f7d01d0120e55f0237ac0d16568d3e75f9214191c0231a3af60624e0b89833a2516ae3a41f7b57337200357e3d1cb8b4ccabbe57478ce3a77230b863711c419d9cb4523c023934de9d84aa6f8ba&p=993dc64ad4934eaf5be7e6291c7a93&newp=8f368d0a86cc41ac52fec7710f00c4231610db2151d4da01298ffe0cc4241a1a1a3aecbf21241406d3c2786206ae4e5deef034743d0034f1f689df08d2ecce7e3c&user=baidu&fm=sc&query=scale%5Frt%5Fpower&qid=ed7985e500042b74&p1=7

    该函数用于计算指定CPU上可用于完全公平调度的CPU POWER统计值。

    比如把整个CPU的Power 看为 SCHED_LOAD_SCALE,

    该CPU上用于运行实时进程平均时间为rq->rt_avg.

    那么可用于完全公平调度的时间就为 available = total - rq->avg.

    然后 ( available / total ) * SCHED_LOAD_SCALE就是该CPU可用于运行非实时进程的Power值。

    unsigned long scale_rt_power(int cpu)

    {
        struct rq *rq = cpu_rq(cpu);
        u64 total, available;

        sched_avg_update(rq);

        total = sched_avg_period() + (rq->clock - rq->age_stamp);
        available = total - rq->rt_avg;

        if (unlikely((s64)total < SCHED_LOAD_SCALE))
            total = SCHED_LOAD_SCALE;

        total >>= SCHED_LOAD_SHIFT;

        return div_u64(available, total);

    }


     
  • 相关阅读:
    Linux内核将要支持最新龙芯3A2000/3B2000
    微软拥抱Linux,着实太晚了
    武校学生
    第一篇 SCI 综述被接收的感想
    如何使用Rally+Docker测试OpenStack
    (OK) ntp——linux设置系统时间—RHEL—FEDORA—CENTOS
    理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术
    (OK) find-alter-files.sh——递归
    (OK) digui-gb18030-utf8.sh——递归
    (OK) digui-dir-del-M.sh——递归
  • 原文地址:https://www.cnblogs.com/honpey/p/7266239.html
Copyright © 2011-2022 走看看