笨叔:用4维空间来理解进程负载

Posted 奔跑吧Linux社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笨叔:用4维空间来理解进程负载相关的知识,希望对你有一定的参考价值。

微信公众号:奔跑吧Linux社区

欢迎订阅笨叔旗舰篇视频节目:https://weidian.com/?userid=1352872851

第二季更新视频啦

今天我们更新了两集第二季的视频节目,这两集视频节目都是和进程调度管理相关的代码分析视频,我们是基于Linux 5.0来讲解代码的哟,没错,我们视频是带领大家直接鲁5.0代码。我们会在第一季+第二季旗舰篇视频里陆续更新Linux 5.0内核的代码分析视频,不见不散!

进程代码分析6 - 再谈SMP负载均衡

用4维空间的角度来讲解进程的负载


上面这个视频只是我们这一期视频的一个预览片,全程1个多小时,有兴趣的小伙伴可以点击阅读原文,进入笨叔微店订阅旗舰篇视频课程。我们在上2个月和大家录制了两期的SMP负载均衡的代码分析视频,那我们这期节目还是继续和大家聊负载均衡,一方面是负载均衡 是进程管理里最复杂的模块,涉及的概念和代码量也比较多,笨叔怕大家一时半会还没有完全理解,所以我们这期视频还是继续来聊负载均衡。

笨叔:用4维空间来理解进程负载_代码分析

我们在第一次smp负载均衡节目里,主要是和大家聊负载是怎么计算的,这个很重要,里面涉及到很多公式和概念。这一期视频节目没看明白,后面的代码看起来也是非常费劲的。那我呢,在最近奔跑吧第二版修订过程中,对一些概念,重新做了一些修订,所以,这期视频,我会更新一下我们最近对负载计算的思考,和我自己定义的一些新概念,不过,公式啥的,基本上都没变化,只是概念做了一些优化,主要是 怎么用中文,更好的抽象和理解这些 公式和代码,我们会4维空间的角度来讲解负载这个概念。

笨叔:用4维空间来理解进程负载_linux_02

第二次smp负载均衡节目里,我们主要是讲 调度域和调度组的关系,这个也是很重要的,因为代码里如何去找一个空闲的CPU和一个繁忙的CPU,这不是乱找的,是有规律的,这个规律就是遵循调度域和调度组的层次结构来,我们稍后在和大家简单回顾一下。

我们来扯一下物理学的4维空间。我们知道0维空间是点,一维空间是直线,两个点连起来就是一根直线。两条平行的线是不会相交的。两条不平行的线,他们有可能会在某个点相交。如果一个生命是在一条直线上,那么它就无法和另外一条平行的直线上的生命相遇。那什么是二维空间呢,二维空间是几根线连起来的面,二维空间只有长和宽。而三维空间是啥呢,把平面卷起来,形成了一个三维的空间。三维空间是有长宽高,从而形成一个三维的,立体的空间。所以,三维空间可以理解为有无数的平面组成。比如,一个最强大脑里 经常经常玩的魔方,它就有好几个面组成了一个正方体。

那什么是4维空间,它们在时间这个维度由很多的三维空间组成,所以4维空间多了时间这个概念。我们生活的4维空间是由无数个静止的三维空间 连续地,动态地,变化而成构成的。我们就生活在这个动态的三维空间里。如果我们把 时间用微观来看,你可以把它看成是由无数个微观的三维空间组成的一个时间轴。其实,我们人啊,是生活的4维空间里,你能看到三维的空间,你能感受到时间的一分一秒的变化。我们在时间轴是连续地匀速的变化,它不能加速,不能减速,不能静止,我们人类无法控制这条时间线。

还有的人说,人是生活在5维空间里,当人离开了地球,就去了五维空间了。


其实,我们生活很多东西都是4维空间的,比如说,100块钱的一张纸币,它是一个静态的东西,你可以把它看成是一个3维空间里面的一个物体,它是静止的。但是呢,如果我们把时间考虑进去,10年后,这个100块的购买力 就不是100块了,现在100块,你可能可以买30斤大米,3块3一斤大米,10年后可能只能买10斤大米了,这就是4维空间。它随着时间的变化而变化的。扯蛋扯远了。我们回到刚才的问题,我们发现直接使用权重,没有考虑4维空间的影响,它只是停留在3维空间里,那当然是不准了,我们现实生活是4维空间,必须把第4维空间,时间这个因素考虑进去。

Linux内核里使用了decay_avg_load的计算公式,为什么这里要使用decay这个东西呢?decay这个单词是衰减的意思。我们还是从4维空间的角度来看。一个能量在时间轴里,它是会慢慢衰减的。比如我们发出的声音,它就会随着时间慢慢衰减,在几十米的地方基本上听不见了。在举个例子,刚才提到的人民币购买力的情况,其实也是经济学上一种衰减,这个随着时间的衰减是符合经济规律的。

很多人可能对实时性的概念有点模糊,什么是实时性?实时性是不是就是让系统跑的更快的意思?是不是跑分更多?什么是硬实时?什么是软实时?

Linux内核在打开了内核抢占功能之后,要达到硬实时标准,还有什么坎?

我们在视频里详细分析,实时性有哪些延时?产生延时的可能的原因是什么?

笨叔:用4维空间来理解进程负载_负载均衡_03

欢迎订阅奔跑吧旗舰篇视频课程

笨叔会继续录制基于Linux 5.0的代码分析的视频课程,有兴趣的同学可以微店或者淘宝店订阅笨叔的第一季+第二季旗舰篇视频,旗舰篇视频是持续不断更新的!一次订阅,持续更新!点击阅读原文,进入笨叔微店订阅旗舰篇视频课程。

蓝色奔跑吧第二版已经交稿

笨叔历时1年新修订的蓝色奔跑吧已经交稿,第二版会新增很多新内容,而且大部分内容是重新重构的,第二版完全基于Linux5.0 + ARM64/x86_64来编写的。书稿在3月初已经交稿,请大家耐心等待。想看Linux 5.0的代码讲解,可以订阅旗舰篇视频课程,笨叔会在视频里详细和大家分析5.0代码的实现。

  1. 第二版详细目录请登录“奔跑吧linux社区”微信公众号,输入“奔跑吧第二版”索取。

  2. 全新的一套奔跑卷题目,有兴趣同学可以登录“奔跑吧linux社区”微信公众号,输入“奔跑卷”索取。


本书预计2020年盛夏出版,到时候笨叔约大家吃西瓜,看奔跑吧!

笨叔:用4维空间来理解进程负载_代码分析_04

笨叔:用4维空间来理解进程负载_linux_05

以上是关于笨叔:用4维空间来理解进程负载的主要内容,如果未能解决你的问题,请参考以下文章

vim入门到TNT

视频更新:代码分析8之单步调试ARM64启动汇编与重定位

[笨叔点滴6] 叔,这个git咋玩啊?

[笨叔点滴13]哪些异常处理的事儿

运维CPU负载

[笨叔点滴10] 中断到“底”来了吗?