00:00
那么如果是1.9以上的版本,咱们还可以通过这个。呃,浮动缓冲区,还有这个独占缓冲区使用率来进一步的分析啊,那这两个分别是什么意思给大家。解释一下啊,首先咱们还是翻开咱们之前的这篇法尼亚介绍的文章,那么其实他这边缓冲区有很多细节给大家介绍一下,这是一个task,那也就是说某个算子的一个实例,比如说呃,你map算子的并行度是五,那你是不是就有五个实例啊,说白了就是这个概念应该不用再解释了吧。对吧,只是其中一个好,那么嗯,大家看一个task,它对应的。是一个什么?这个叫result partition。那同样的,其实对于他自己来讲,是不是应该也有一个叫input g。对吧,是跟task是一一对应的,1:1的一个task有一个RP,有一个IG,这个咱们刚才讲了,但其实还有一块,他我们之前也介绍了,他自己不够用的这块不是叫独占内存。
01:12
啊,独占缓冲区,也就是那个所谓的exclusive。Exclusive独占的。就指的是这一块,自己先固定使用的这一块,每个task可独享的,那在之后呢,我们说它不够了,是不是要申请啊,他怎么申请呢。这里有个东西叫什么?叫做网络缓冲区吧。对吧。那这一块其实就是咱们所谓的floating。Floating buffer,那么大家注意,这个网络缓冲区不是task独占的。这个对应的是。一个task manager一个啊一个TM一个。也就是说这个缓冲区可能是被多个task同时去申请的啊,这个大家要明白这个概念,好,那么接下来大家分析一下。
02:04
呃,有什么情况呢?首先给这么几个场景啊,来,我们看这张表格。首先是自独占的缓冲区使用率很低。那么。TM上的那个。缓冲池使用率也很低,那这种一般情况来讲是不是一个正常的对吧?好,但是呢,咱们还要分析一下上游的情况,考虑的更细一点,如果上游的输出缓冲区使用率很低,那正常,如果上游的输出缓冲很高,那说明什么?那可能是上游发不过来对吧,因为你至少从接收的缓冲区来讲,是不是都很低啊,还没发过来啊,所以这种情况一般可能是什么?有一个网络问题,上游因为网络问题没法把数据发给你,对吧。上游啊,输出很高,你呢收入很低,说明你没接到嘛,对吧,所以这个是一个潜在网络瓶颈,这也可以去来分析的,另外我们再接着看啊。
03:05
呃,独占的缓冲使用很低,下面这两个都是什么呢?呃。一个TM一个的缓冲使用率很高,那说明什么呢?有没有这种场景,同学们?有吧?来,我们看这张图。也就是说。呃,这是对于这个task而言,他自己的独占啊,咱们得看输入对吧,这个这这个是对输入而言的啊,他自己独占的这个很低。但是大家很同一个task manager上的这个缓冲池,它使用率很高,说明什么?说明你虽然没用,是不是被其他人用了,这里同一个task manager,它这里是不是可能有个task c啊。对吧,他们两个比如说都是map的一个病情实例嘛,对吧,那他是不是使用率高,说明肯定被别人申请使用了嘛,也就是说你自己低没错,但别人很高说明什么。
04:01
说明有可能有数据倾斜。对吧,因为别人他接收的数据量很大,对不对。呃,他自己的独占肯定是高的,另外他还会去申请这个大家共享的这个资源,所以这个也高,但是对于task b来讲,他自己说,哎,我独占的低啊,但是大家功用的很高,那你就可以推断出应该是有倾斜。所以你再回过头看这个表格,哎,自己独占低,但是公公共的这个备份的资源值很高,说明什么?部分input channel产生了一个反压,这种其实就是什么倾斜了。那上面这个为什么又单独列出来呢?这个是正在传递的情况什么呢?呃,上游的输出很低。说明呃,这个反压的压力即将要传导到上游,只不过他还没接,还没被被反压而已,就马上了,这个也是一个临时状态,很短,短暂啊,你也可以不用看。
05:00
如果上游的输出也高,那说明已经反了,并且呢,是由于倾斜引起的。这个咱们是可以分析出来的,另外咱们看另一另一块呃,独占的缓冲使用率很高。对吧,啊,然后呢,如果公共的这个。缓冲池使用率比较低啊,那这个咱们也不用呃去关注了,对吧,因为他还没还没到什么呢,还没去向公共的申请,说明他自己还扛得住对吧。好,再往下。如果很高,那么备份备用的这个缓冲。这个共享的,大家一起用了这个缓冲池,它使用率很高,说明什么?说明就是你申请的嘛,对吧,你就是罪魁祸首啊。所以呢,它会对所有的大多数或者所有的input channel会产生一个反压。有可能对吧,那还有一种状态,我们说了是正在传递的,这个主要取决于上游的输出啊。
06:10
相当于说你你把它都占光了嘛,啊,把它都占光了。总而言之言的,总之最重要的是看谁呀,看他。另外看它有什么作用呢,这个独占内存呢,由。如果咱们的这个floating buffer使用率很高,说明就是说备用了都用上了对吧?说明有人不够用去申请了,说明你应该要慢慢的要反压了,那这个时候你的反压会往上游传递,对吧?这些都是对input而言了,那再往下这个独占使使用率很低,说明不是你引起的,不是你这个task引起的,可能是什么呢?可能是其他task引起的,对吧。那可能是有一定的倾斜。这个就是咱们通过这两个指标进一步的分析啊,你就结合这个图来记就行啊。
07:02
还有一个就是咱们说刚才说到什么部分input channel,多数input channel是吧,这个东西是什么东西呢?这个忘了给大家讲了,对吧,我们刚才讲了这个input gate是task,是不是1:1啊。比如说这个task b它呢,就自己有一个input是用的是独享缓冲,对吧,另外呢,咱们这个。Input channel是什么呢?叫输入通道。它的概念是比这个gate还小的,那这个channel有几个呢?由什么来决定啊?啊,举个例子啊,这是A算子,这是B算子A的并行度啊。是3B的并行度是一。那么这个时候。对B来讲,这里是不是应该有,因为它并行度是不是只有一个task,对吧,那那它是不是有一个。那它的input channel等于多少呢?
08:01
啊,就取决于上游有多少那个实例会向他发送数据,比如说这A的三个实例都会向他发送数据,那你看有几条线呢?三条线这个就是所谓的channel啊,也就是说当前这都会接收来自上游多少个实例的数据,这个就是input channel。那我们再仔细看一下这句话。呃,独占低。备用的用的高只对部分input channel反压。这样你就能理解了吧。对吧。也就是说对部分input channel是不是上游跟下游建立的,你跟你建立的通道,你只有部分有原因可能是倾斜吗?那倾斜肯定是。往部分去反嘛,那这个就是往多数去反压嘛,这个就是咱们再再再多啰嗦一句啊。
我来说两句