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月2日
    2
  • 上海项目管理软件

    上海项目管理软件 上海作为我国的一个重要的城市,拥有着悠久的历史和丰富的文化底蕴。随着经济的发展和科技的进步,上海的项目管理软件也在不断更新和发展。 上海项目管理软件是一种用于管理…

    联系我们 2024年9月16日
    33
  • 武汉的游戏软件开发公司前十名

    武汉的游戏软件开发公司前十名 随着游戏行业的快速发展,武汉已经成为中国游戏软件开发的重要基地之一。在这里,有十家优秀的游戏软件开发公司,它们分别是: 1. 武汉市江夏区游戏软件开发…

    联系我们 2024年12月5日
    3
  • 研发项目管理软件免费

    研发项目管理软件免费:创新与挑战 近年来,随着科技的快速发展,企业对于研发项目的管理也越来越重视。为了满足这一需求,许多企业选择使用研发项目管理软件来帮助他们高效地管理项目进度、预…

    联系我们 2024年9月18日
    29
  • 项目管理软件 手机端

    项目管理软件 手机端 随着科技的不断发展,手机已经成为人们日常生活中不可或缺的一部分。项目管理软件手机端也因此成为了项目管理者的必要工具。本文将介绍一款优秀的项目管理软件手机端,帮…

    联系我们 2024年9月19日
    25
  • 免费敏捷开发项目管理工具

    免费敏捷开发项目管理工具 随着敏捷开发方法的普及,越来越多的开发者开始使用免费敏捷开发项目管理工具来帮助他们更好地组织和管理项目。这些工具不仅可以帮助开发者更好地协作,还可以帮助他…

    联系我们 2024年9月16日
    32
  • 党建引领聚合力 脱贫攻坚有动力(党建引领促脱贫 凝心聚力谱新篇)

    “重点工作在哪里,困难任务在哪里,支部就建到哪里,党员的先锋模范作用就发挥到哪里……”5月25日,在甘肃兰州榆中县配农网改造工程现场,国网榆中县供电公司配农网工程项目部临时党支部书…

    联系我们 2023年6月1日
    239
  • 课题负责人的主要学术简历、学术兼职,在相关研究领域的学术积累和贡献

    课题负责人的主要学术简历、学术兼职以及在相关研究领域的学术积累和贡献 主要学术简历 姓名:XXX 性别:男 出生年月:XXXX 年 XXXX 月 联系方式:XXX 电子邮件:XXX…

    联系我们 2024年12月10日
    24
  • 2022年系统集成项目管理工程师十大常见问题汇总(系统集成项目管理工程师2021年全部取消)

    2022年系统集成项目管理工程师十大常见问题汇总,让备考小白不走弯路,欢迎留言和私信,看到必回。 一、系统集成项目管理工程师介绍: “系统集成项目管理工程师”是由国家人力资源和社会…

    2022年6月13日
    557
  • 项目评审开场

    尊敬的各位评审专家: 大家好!今天,我非常荣幸能够在这里和各位专家一起分享我们正在进行的项目评审。首先,我想简单介绍一下我们的项目的背景和目标。 我们的项目是为了改善我们公司的生产…

    联系我们 2024年12月11日
    0