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月8日
    6
  • 全国党员管理信息系统山西

    全国党员管理信息系统山西 全国党员管理信息系统是一个重要的党员管理工具,它为山西全省的党员管理提供了有力的支持。作为全国党员管理信息系统的一个重要组成部分,山西省该系统的运行情况备…

    联系我们 2024年12月2日
    27
  • 常用软件项目管理工具

    常用软件项目管理工具 随着软件开发和项目管理的日益复杂,越来越多的软件公司开始使用各种项目管理工具来帮助他们更高效地管理项目。今天,我们列举了一些常用的软件项目管理工具,以帮助开发…

    联系我们 2024年9月18日
    30
  • 以党建引领 推动民族宗教工作高质量发展(以党建为引领促进民族团结)

      凌云县发挥党建引领推动民族宗教工作“火车头”作用,推行“党建+民族团结进步创建”“民族 同心圆”等模式,将创建工作与党建工作同安排、同部署、同检查、同落实,全力推动民族宗教工作…

    联系我们 2023年6月1日
    1.3K
  • 部门项目管理软件

    部门项目管理软件 随着现代组织的发展,部门项目管理软件变得越来越重要。这些软件可以帮助团队更好地管理项目进度,分配任务,跟踪项目绩效和成果,提高团队的效率和协作能力。在本文中,我们…

    联系我们 2024年9月18日
    27
  • 加强企业基层党建政工工作的思考(加强企业基层党建政工工作的思考和建议)

    □ 贾伟光 现阶段,企业党建政工工作面临许多新的挑战,需要进一步加强和优化。企业应不断创新党建政工工作的方式方法,从而科学解决党建政工工作存在的问题,构建更加完善的党建政工工作机制…

    联系我们 2023年6月1日
    278
  • 项目管理软件p3

    项目管理软件P3 项目管理软件是一种用于管理项目进度、预算、资源和风险管理的工具,能够帮助团队更好地协调工作,提高项目的成功率和绩效。在这篇文章中,我们将介绍P3项目管理软件,并探…

    联系我们 2024年9月20日
    93
  • DataPipeline协助山西证券搭建数据库准实时同步平台正式投入使用(山西证券oa系统)

    近日,山西证券股份有限公司(以下简称:山西证券)和DataPipeline共同宣布,DataPipeline协助山西证券搭建的数据库准实时数据同步平台正式投入使用。该项目的实施对于…

    联系我们 2024年5月14日
    84
  • 项目管理软件 单机版

    项目管理软件 单机版 随着现代信息技术的不断发展,项目管理软件已经成为了企业管理中不可或缺的工具。单机版项目管理软件是一种基于计算机的项目管理工具,可以在单个计算机上进行使用,不需…

    联系我们 2024年9月18日
    41
  • 组织工作 动漫

    组织工作动漫:如何提升团队效率 随着现代社会的快速发展,组织工作已经成为每个企业和个人必不可少的一部分。然而,传统的组织工作往往存在着许多问题,比如缺乏沟通、协调困难、团队合作效率…

    联系我们 2024年12月9日
    0