mp3aaa 2022-05-07 14:39
浏览 9
已结题

CFS调度算法中,虚拟运行时间为什么要使用公式运算而不是给一个固定的值

我是一个PHP程序员, 最新在了解CPU调度 ,学习了CFS调度算法的一些文章,有一个问题。

虚拟运行时间的作用既然是 ,让每个进程的调度次数更平均,为什么不用一个固定的值?
为什么要是使用公式 算出一个 并不等于 实际运行时间总和 的值,而且这个值也是大于调度周期的? 这个值是有其他用处吗?

  • 写回答

1条回答 默认 最新

  • mp3aaa 2022-05-07 15:35
    关注
    
    <?php
    function cfs($a_nice,$b_nice,$c_nice){
        $niceToWeight=[1024,820,655,526,423,335];
        $nice0=1024;
        $cpu_schedule=6;
        //实际运行时间公式 = 调度周期 * 进程权重 / (所有进程权重之和);
        $sj_a=round($cpu_schedule*$niceToWeight[$a_nice]/($niceToWeight[$a_nice]+$niceToWeight[$b_nice]+$niceToWeight[$c_nice]),1);
        $sj_b=round($cpu_schedule*$niceToWeight[$b_nice]/($niceToWeight[$a_nice]+$niceToWeight[$b_nice]+$niceToWeight[$c_nice]),1);
        $sj_c=round($cpu_schedule*$niceToWeight[$c_nice]/($niceToWeight[$a_nice]+$niceToWeight[$b_nice]+$niceToWeight[$c_nice]),1);
    
        //虚拟运行时间公式 = 实际运行时间*nice_0_load / 权重
        $xn_a=round($sj_a*$nice0/$niceToWeight[$a_nice],2);
        $xn_b=round($sj_b*$nice0/$niceToWeight[$b_nice],2);
        $xn_c=round($sj_c*$nice0/$niceToWeight[$c_nice],2);
        echo "<p>****************************************<p>";
        echo "A进程nice权重: {$a_nice} <br>";
        echo "B进程nice权重: {$b_nice} <br>";
        echo "C进程nice权重: {$c_nice} <br>";
        echo "实际运行时间 A进程: {$sj_a}<br>";
        echo "实际运行时间 B进程: {$sj_b}<br>";
        echo "实际运行时间 C进程: {$sj_c}<br>";
        echo "<hr>";
        echo "虚拟运行时间 A进程: {$xn_a}<br>";
        echo "虚拟运行时间 B进程: {$xn_b}<br>";
        echo "虚拟运行时间 C进程: {$xn_c}<br>";
        echo "<p>****************************************<p>";
    }
    cfs(1,2,3);
    

    A进程nice权重: 1
    B进程nice权重: 2
    C进程nice权重: 3
    实际运行时间 A进程: 2.5
    实际运行时间 B进程: 2
    实际运行时间 C进程: 1.6

    虚拟运行时间 A进程: 3.12
    虚拟运行时间 B进程: 3.13
    虚拟运行时间 C进程: 3.11


    我写了一段代码来更好的理解,不知道我理解的公式是否正确?
    如果正确的话,虚拟运行时间的确是恒定几乎相等 不会因为权重变化而不等,实际时间是根据权重而来 所以权重高的时间更长,为什么虚拟运行时间需要计算出来呢 ,都用 1 来代替不行吗

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 创建了问题 5月7日

悬赏问题

  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。