Flink的Slot是如何做到平均划分TM内存的?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Flink的Slot是如何做到平均划分TM内存的?

徐涛
Hi All,
     在官方文档里面,有介绍说多个Slot之间可以平均划分TM内存。
     但是我在Flink的源代码里面并没有找到Slot平均划分TM内存的代码。而且不太明白的是,同一个JVM内,不同Slot平均划分内存的实现原理是什么?
     非常感谢!


谢谢
徐涛
Reply | Threaded
Open this post in threaded view
|

Re: Flink的Slot是如何做到平均划分TM内存的?

Xintong Song
Hi 徐涛,

Flink并不能保证TM的资源是严格平分给所有slot的。正如你所言,JVM中不同线程的资源并无严格隔离。所谓的平均划分更多的是调度上的考虑,可以理解为在调度时认为一个slot的资源相当于TM资源的1/n
(n为slot数)。

有一个特例,对于DataSet作业使用到的managed memory,Flink目前是保证了TM的managed
memory平均划分给所有slot的。Managed
memory由TM上的MemoryManager管理,task在运行期间向MemoryManager申请内存,因此可以控制每个slot中task申请的内存上限。

Thank you~

Xintong Song



On Mon, Jul 1, 2019 at 8:59 PM 徐涛 <[hidden email]> wrote:

> Hi All,
>      在官方文档里面,有介绍说多个Slot之间可以平均划分TM内存。
>
>  但是我在Flink的源代码里面并没有找到Slot平均划分TM内存的代码。而且不太明白的是,同一个JVM内,不同Slot平均划分内存的实现原理是什么?
>      非常感谢!
>
>
> 谢谢
> 徐涛