当前位置: 首页 > 知识库问答 >
问题:

完全公平调度程序vs循环调度

李锦
2023-03-14

在教科书中,他们说 CFS 的主要优点是将 CPU 分配给不同的进程非常公平。但是,我无法知道带有RB树的CFS如何能够实现比简单的循环队列更好的公平形式!如果我们忘记了 CFS 分组和其他功能,这些功能也可以以某种方式合并到简单的 RR 队列中,谁能告诉我 CFS 如何比 RR 更公平?提前致谢

共有1个答案

微生学
2023-03-14

我认为关键的区别与“卧铺公平”的概念有关。

使用RR,就绪队列中的每个进程都获得相等份额的CPU时间,但是被阻塞/等待I/O的进程呢?它们可能会在I/O队列中停留很长时间,但是一旦它们回到就绪队列中,它们就不会获得任何累积的信用。

有了CFS,进程确实获得了等待时间,并且一旦它们不再被阻塞,将获得更多的CPU时间。这有助于奖励更多的交互式进程(倾向于使用更多的I/O ),并促进系统响应。

这里有一篇关于CFS的很好的详细文章,其中提到了“卧铺公平”:https://developer.ibm.com/tutorials/l-completely-fair-scheduler/

 类似资料:
  • 我的理解是,旨在并发运行其参数,并且当协同程序执行等待表达式时,它为事件循环提供了安排其他任务的机会。考虑到这一点,我惊讶地发现下面的代码片段忽略了的一个输入。 据我所知,会发生以下事情: run(main())对事件循环执行任何必要的全局初始化,并安排main()执行。 实际上,这不是我观察到的。相反,整个程序相当于。我发现非常有趣的是,即使是代码的微小变化似乎也会重新引入公平。例如,如果我们有

  • 主要内容:优点,缺点轮循调度算法是最流行的调度算法之一,它可以在大多数操作系统中实际实现。 这是先到先得的排程先发制人的版本。 该算法着重于时间共享。 在这个算法中,每个进程都以循环方式执行。 在称为时间量的系统中定义了一定的时间片。 就绪队列中的每个进程都分配给该时间段的CPU,如果在该时间内进程的执行完成,那么进程将终止,否则进程将返回就绪队列并等待下一轮完成 执行。 优点 它可以在系统中实际实现,因为它不依赖于

  • 我已经配置了一个Hadoop 2.7.4集群,其中有3个工作人员和一个主服务器。我必须在集群上运行多个作业。一项工作需要很多时间来完成,而其他工作是小的。我已经知道公平的时间表最适合我的情况。当我更新yarn-site.xml公平调度器类并重新启动集群时,当我访问http://localhost:8088/cluster(资源管理器web UI)时,会导致以下错误

  • 我正在做一个项目,我们计划使用WLP (WebSphere liberty)代替传统的WAS。 代码使用 WAS 调度程序来调度活动。 liberty 是否也具有与 WAS 中存在的相同级别的调度程序支持/功能? 如何将调度程序任务从webphere迁移到自由?

  • 在以下示例中,有六个进程分别命名为P1,P2,P3,P4,P5和P6。 他们的到达时间和爆发时间如下表所示。 系统的时间量是4个单位。 进程ID 到达时间 突发时间 1 0 5 2 1 6 3 2 3 4 3 1 5 4 5 6 6 4 根据算法,我们必须保持就绪队列和甘特图。 两个数据结构的结构在每次调度后都会改变。 就绪队列: 最初,在时间,过程P1到达,其将被安排为时间片4单位。 因此,在就

  • 问题内容: 我创建了一个for循环,该循环循环了元素出现在容器中的次数。for循环从HTML捕获一些数据,并创建一个JSON url,然后将返回一个值。然后应将该值添加到适当位置的HTML中。 问题似乎是for循环在进行所有Ajax调用之前完成,因此仅将最后一个值添加到HTML。我以为可以确保readystate等于4,但是该解决方案不起作用。我还尝试将完整而不是成功用作Ajax事件。有什么见解吗

  • 我已经通过接受了公平和非公平纪律的测试。我写了一个模拟哲学家吃饭的小程序。 每个哲学家都有左右叉子,分别是s。我模拟了1000次思考和进食行为: 在哪里 没什么意思,只是睡了一段时间而已。下面是eat的

  • 问题内容: 使用Java计时器,然后切换到ScheduledExecutorService,但我的问题未解决。由于系统时间更改之前安排的任务(通过ntpd)不会按指定的延迟执行。没有日志,什么也没有发生:(。 在64位Linux上的目标中使用jre 1.6.0_26 64位。 更新: ScheduledExecutorService在Windows上运行正常。问题仅存在于运行64位JVM的基于64