10 行代码玩转弹性调度的小把戏(弹性调班什么意思)

0

作者 | dog250

责编 | 唐小引

头图 | CSDN 下载自东方 IC

出品 | CSDN

Linux 的进程调度器是通用的调度器,无论是 O(n)O(n),O(1)O(1),还是 CFS,均是基于统一的指标来对待所有进程的。也就是说,进程甚至无法自主退让。

只要确定了一个进程的优先级,无论是是什么调度算法,该进程的地位总是不会变化,如果能做到下面的策略就好了:

  • 系统中进程多了,就加速退让。

  • 系统中进程少了,就加速抢占。

  • 工人来了,就退让。

  • 经理来了,就抢占。

  • ……

考虑一个进程 A 在一个特定的系统中运行,它最多只能用 40%的 CPU,此时,如果有另外的待运行进程,那么这些进程自然分摊另外 60%的 CPU,如果再来一个进程 A 呢?显然,两个进程 A 的 CPU 时间均会减少。

能不能保证两个进程 A 仍然分别使用 40%的 CPU,然后其它进程分摊剩余 20%的 CPU 呢?很难!

你可能说可以配 group 啊,但是这必须有一个静态的配置过程,很难动态自适应。

换句话说,Linux 的调度器是非弹性的

下面的代码展示了一个简单的弹性调度:

#!/usr/local/bin/stap -g

probe kernel.function(\"__enqueue_entity\")
{
task = _task_of($se)
pid = @cast(task, \"struct task_struct\")->pid
if ($1 == pid) {
_nr = $cfs_rq->nr_running
t = $se->vruntime;
$se->vruntime = t 3000000*(_nr - 1)
}
}

意思是指定进程根据系统中负载的数量来退让:

  • 系统负载越高,指定进程占有 CPU 时间比例越低。

  • 系统负载越低,指定进程占有 CPU 时间比例越高。

来来来,看效果:

0

可以看到:

  • 当只有一个 loop 的时候,它占用 100%的 CPU。

  • 当再生一个 loop 的时候,它几乎和第一个 loop 平分 CPU。

  • 当越来越多的 loop 运行的时候,第一个 loop 的 CPU 份额逐渐降低。

  • 本是同根生,只有第一个 loop 被弹性了。

嗯,效果还行,但不够平滑。试试二次曲线, or 三次曲线?

$se->vruntime = t 200*(_nr - 1)*_nr*_nr
// or
// $se->vruntime = t 20000*(_nr - 1)*_nr

200 何来?调一手好参数是必要的。

此外,我这里弹性策略过于单一,其实是可以设计的足够复杂的,比如针对特定进程的特定策略,即便是简单的双斜率直线段,也比我这个 OK,是吧,不多说。

有人问,如何找到要修改的代码在哪里,只要对 Linux 内核的执行原理足够熟悉,这并不难,对于手艺人而言,阿基米德,鲁班,庖丁,黄道婆这些人的地位是堪比欧几里得,笛卡尔的。

原文链接:https://blog.csdn.net/dog250/article/details/108281228

00

0

点分享

00

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月14日 上午8:08
下一篇 2024年5月14日 上午8:19

相关推荐

  • 武义协同办公平台

    武义协同办公平台:让团队协作更高效 武义协同办公平台是一款专为企业用户提供高效协作工具的软件,它可以帮助企业用户实现团队内部的信息交流、文件共享、任务管理等功能,从而提高工作效率和…

    联系我们 2024年12月5日
    0
  • 争优 争先 争效丨丨永安检察打造“检心向党·燕安有我”党建品牌

    近年来,永安市检察院着力打造“检心向党·燕安有我”党建品牌,勇于探索、开拓创新,锚定“让党中央放心、让人民群众满意”的根本目标,突出模范机关创建“六个聚焦”的工作要求,充分发挥党组…

    联系我们 2023年5月31日
    255
  • 浙江省建设科研项目算省部级还是厅局级

    浙江省建设科研项目算省部级还是厅局级 浙江省是中国的一个省份,位于浙江省的杭州市。浙江省的建设科研项目有很多,其中一些可能是省部级的,而另一些可能是厅局级的。 省部级科研项目是指那…

    联系我们 2024年12月5日
    0
  • 浪潮服务器raid管理软件

    浪潮服务器raid管理软件: 轻松管理浪潮服务器的RAID存储系统 浪潮服务器是当前市场上最受欢迎的服务器之一,它提供了强大的存储功能,支持多种RAID模式,让用户可以更加高效地管…

    联系我们 2024年12月5日
    0
  • 低代码平台(一)-远程组件打包(ESModule含源(开源 低代码)

    # 低代码平台(一)-远程组件打包(ESModule含源码和演示地址) **引言** 在Web开发快速演进的时代,低代码平台正逐渐成为提升开发效率、降低开发门槛的关键工具。它们允许…

    联系我们 2024年5月14日
    122
  • 互联网项目管理工具

    互联网项目管理工具 随着互联网技术的快速发展,互联网项目管理工具成为了现代互联网公司必不可少的工具之一。互联网项目管理工具可以帮助项目经理更好地管理项目进度、资源、风险等信息,提高…

    联系我们 2024年9月16日
    31
  • 项目的三个约束条件分别是范围、进度和成本,它们相互影响,相互制约,其中最核

    项目的三个约束条件分别是范围、进度和成本,它们相互影响,相互制约,是项目管理中不可或缺的重要因素。本文将探讨这三个约束条件对项目的影响和相互关系,以及如何通过有效的项目管理来最大化…

    联系我们 2024年12月11日
    19
  • 课题组信息费费用包括哪些内容

    课题组信息费费用包括哪些内容 课题组信息费是一种用于支持课题组成员学习和研究的费用。通常情况下,课题组信息费包括以下内容: 1. 课题组成员的基本通讯和会议费用。包括课题组成员之间…

    联系我们 2024年12月8日
    2
  • 项目管理软件使用

    项目管理软件使用 项目管理软件是一种用于管理项目进度、资源、和质量的工具,能够帮助项目经理和团队成员更好地协调工作,提高工作效率。本文将介绍项目管理软件的使用。 项目管理软件可以用…

    联系我们 2024年9月18日
    31
  • 什么是项目管理软件

    什么是项目管理软件? 项目管理软件是一种工具,用于帮助团队跟踪和管理项目进度、预算和质量。这些软件通常包括任务分配、进度跟踪、成本预算、风险管理、质量管理和沟通工具等功能,使团队成…

    联系我们 2024年9月16日
    32