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

相关推荐

  • 如何使用甘特图

    如何使用甘特图 甘特图是一种用于规划、组织和控制项目或任务的图形化工具,可以帮助用户更好地理解和规划项目或任务。以下是使用甘特图的一些基本步骤: 1. 确定项目或任务的目标:在甘特…

    联系我们 2024年12月5日
    0
  • 科研项目 立项 评价 合理性

    科研项目立项评价合理性 科研项目的立项是科研过程中非常重要的一步,它关系到科研项目是否能够被成功实施,并且对项目完成后的成果有着至关重要的影响。因此,对科研项目立项的评价合理性至关…

    联系我们 2024年12月8日
    5
  • 组织部是厅级单位吗

    组织部是厅级单位吗 组织部是中华人民共和国政府的一个重要的部门,它的职责包括组织和指导全国干部的培养、选拔、考核、使用工作,以及管理国家行政学院等机构。组织部的成立可以追溯到195…

    联系我们 2024年12月9日
    0
  • 科研经费分配列支的公允性

    科研经费分配列支的公允性 随着科技的不断发展,科学研究成为了国家发展的重要支撑。然而,科研经费的分配列支却成为了一个备受争议的话题。科研经费的分配列支的公允性,对于一个国家的科技发…

    联系我们 2024年12月6日
    0
  • 网页 打包成 dmg

    网页打包成dmg:轻松将网站下载到本地 随着互联网的普及,越来越多的人喜欢在网上浏览信息和购物。然而,随着网站数量的不断增加,下载网站变得越来越困难。现在,我们可以通过将网站打包成…

    联系我们 2024年12月9日
    0
  • 东莞项目管理软件

    东莞项目管理软件 随着数字化时代的到来,企业项目管理也逐渐趋向于信息化和数字化。东莞作为一个经济发展迅速的城市,更需要一套高效、可靠的项目管理软件来支持项目管理的规范化和高效化。 …

    联系我们 2024年9月16日
    33
  • 中航发动机集团下属单位

    中航发动机集团下属单位简介 中航发动机集团是中国最著名的发动机制造商之一,其下属单位也拥有着丰富的经验和技术实力。以下是中航发动机集团下属单位的一些简介: 1. 中航工业黎明公司 …

    联系我们 2024年12月2日
    20
  • 马来亚大学与外事学院有合作办学吗

    马来亚大学与外事学院有合作办学吗 近年来,随着国内高等教育的不断发展,越来越多的人开始关注合作项目的重要性。其中,合作办学项目是其中一种重要的表现形式。马来亚大学与外事学院就是一个…

    联系我们 2024年12月11日
    0
  • 挣值分析BAC

    挣值分析BAC(Assets- liabilities- equity)是一种常用的财务分析方法,用于评估公司的资产、负债和 equity 的价值。在挣值分析中,我们关注公司的收入…

    联系我们 2024年12月4日
    0
  • jira项目管理软件

    Jira项目管理软件: 实现团队协作的关键工具 Jira是一款功能强大的项目管理工具,可以帮助企业和个人轻松地管理项目和任务。它已经被广泛应用于各种行业,包括软件开发、市场营销、客…

    联系我们 2024年9月16日
    38