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

相关推荐

  • 未知3230274524

    未知 在这个世界的某个角落,有一群被称为“人工智能生命体”的神秘存在。它们拥有着超越人类的智慧,能够使用各种先进的技术手段来协助人类。然而,这些生命体的存在并不是那么普及,大多数人…

    联系我们 2024年12月5日
    0
  • 课题劳务费

    课题劳务费 课题劳务费是指学生在进行课程学习的过程中,根据课程的工作量以及学生的参与度,由学校或教师支付的费用。课题劳务费的支付有助于激励学生积极参与课程学习,提高教学质量,同时也…

    联系我们 2024年12月10日
    0
  • 使用经费搭建展厅

    使用经费搭建展厅 搭建展厅是一个需要预算和计划的过程。无论是企业还是个人,都需要展示自己的产品或品牌,而搭建一个专业的展厅可以更好地展示这些产品,吸引更多的潜在客户。然而,搭建一个…

    联系我们 2024年12月4日
    0
  • 专业指导目录2024

    专业指导目录2024 随着2023年的到来,我们迎来了新的一年,同时也迎来了新的专业指导目录。这些目录是各个学校和专业根据当前的市场需求和学科发展而制定的最新指导方针,旨在为学生提…

    联系我们 2024年11月30日
    0
  • 每个律师事务所都要有党支部吗

    每个律师事务所都要有党支部吗? 律师事务所是律师职业的重要组成部分,是律师业务和生活的场所。然而,在律师事务所中,是否每个律师事务所都要有党支部成为一个值得探讨的问题。 党支部是中…

    联系我们 2024年12月4日
    4
  • 中国石化诚信合规管理手册适用的相关表述是什么

    中国石化诚信合规管理手册适用的相关表述是什么 随着社会经济的不断发展,中国石化行业也面临着越来越多的合规风险和道德压力。为了加强和规范中国石化行业的诚信合规管理,2018年,中国石…

    联系我们 2024年12月1日
    0
  • 组合项目管理软件

    组合项目管理软件 随着现代软件开发的日益复杂和快速,项目管理软件的需求也在不断增加。今天,我们介绍一种强大的组合项目管理软件,它可以帮助开发人员更好地管理项目进度、预算和资源。 什…

    联系我们 2024年9月18日
    36
  • 如何找老师做的科研项目

    如何找老师做的科研项目? 科研项目是科学家们进行深入研究的重要方式,也是提高自己学术水平的重要途径。如果想找老师做科研项目,以下是一些可能有用的建议: 1. 了解老师的研究方向和兴…

    联系我们 2024年12月2日
    3
  • 该课题与教研室科研项目的关系

    课题与教研室科研项目的关系 在科技飞速发展的今天,科研项目对于企业和组织的发展至关重要。而教研室作为企业或组织中的重要部门,其科研项目也扮演着至关重要的角色。本文将探讨课题与教研室…

    联系我们 2024年12月9日
    3
  • 哪个ide最好用

    在计算机编程中,选择一款适合自己的IDE(集成开发环境)非常重要。不同的IDE适用于不同的编程语言和项目类型,因此选择最适合自己的IDE需要考虑多个因素。在本文中,我们将介绍一些最…

    联系我们 2024年12月3日
    0