Re: Flink 内存类型相关疑问

2020-03-10 文章 zhisheng
好的,清楚了,感谢 Xintong Song 于2020年3月10日周二 下午12:43写道: > Hi Zhisheng, > > 首先,Flink 官方的内存配置文档 [1] 中明确表示了,不推荐同时配置 > process.size、flink.size、task.heap.size + managed.size 三者中的任意两种或以上。 > > > Explicitly configuring both *total process memory* and *total Flink > > memory* is not recommended. It may lead to

Re: Flink 内存类型相关疑问

2020-03-09 文章 Xintong Song
Hi Zhisheng, 首先,Flink 官方的内存配置文档 [1] 中明确表示了,不推荐同时配置 process.size、flink.size、task.heap.size + managed.size 三者中的任意两种或以上。 > Explicitly configuring both *total process memory* and *total Flink > memory* is not recommended. It may lead to deployment failures due to > potential memory configuration

Re: Flink 内存类型相关疑问

2020-03-09 文章 zhisheng
hi, xintong 刚才我在 YARN 上分别测试了四种情况,第一种是默认不修改内存的配置,直接运行作业(Per Job 模式,下面的都是这种模式),作业能够启动起来,能正常运行,内存分配是 Flink 自己分配的; 第二种情况是配置文件指定 taskmanager.memory.managed.size 和 taskmanager.memory.task.heap.size 参数的大小,分别是 1024m 和 256m,作业也能够正常启动运行,截图如下:

Re: Flink 内存类型相关疑问

2020-03-09 文章 Xintong Song
> > 这里的“所配置的direct内存”,是指按照task.manager.network.memory.fraction计算得到的network > memory大小。我想是不是这部分内存按照memory segment全部预分配了,所有metrics里显示的是全部是被Used了? 是的,Network Buffer Pool 是在 TM 初始化时预申请好的。在所有内存类型中,只有 Network Memory 是预申请的。Managed Memory 1.9 以前是有一个配置可以预申请(默认不开),1.10 起不再支持预申请。 Thank you~ Xintong Song

回复:Flink 内存类型相关疑问

2020-03-09 文章 pkuvisdudu
多谢解答。 关于“第二个是我看到metrics里directMemoryUsed总是和所配置的direct内存大小是一样的,不知道具体原因是啥?” 这里的“所配置的direct内存”,是指按照task.manager.network.memory.fraction计算得到的network memory大小。我想是不是这部分内存按照memory segment全部预分配了,所有metrics里显示的是全部是被Used了? | | 张江 | | 邮箱:zjkingdom2...@163.com | 签名由 网易邮箱大师 定制 在2020年03月10日 10:16,zhisheng

Re: Re: Flink 内存类型相关疑问

2020-03-09 文章 zhisheng
hi,xintong,感谢耐心且专业的回答 Xintong Song 于2020年3月10日周二 上午10:04写道: > Hi Zhisheng, > > 1、Non-Heap 那个 UI 上展示的是否是 MetaSpace 和 Overhead 加起来的值? > > > 从物理含义上来说,Non-Heap 描述的内存开销是包含在 Metaspace + Overhead 里的。 > > > > 2、为什么本地起的 Standalone Flink,为啥 UI 上展示的 Heap 会超过设置的 > > taskmanager.memory.process.size 的值? > >

Re: Re: Flink 内存类型相关疑问

2020-03-09 文章 Xintong Song
Hi Zhisheng, 1、Non-Heap 那个 UI 上展示的是否是 MetaSpace 和 Overhead 加起来的值? 从物理含义上来说,Non-Heap 描述的内存开销是包含在 Metaspace + Overhead 里的。 > 2、为什么本地起的 Standalone Flink,为啥 UI 上展示的 Heap 会超过设置的 > taskmanager.memory.process.size 的值? 这主要是因为,我们只针对 Metaspace 设置了 JVM 的参数,对于其他 Overhead 并没有设置 JVM 的参数,也并不是所有的 Overhead

Re:Re: Flink 内存类型相关疑问

2020-03-09 文章 pkuvisdudu
多谢解答。 managed memory和network buffers在作业启动后会有调整是在 https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/mem_setup.html 里看到的,是1.9版本里的。 还有两个小地方想确认一下,一是您前面说native内存是无法知道使用情况的,那么除了cut-off里的native内存,在Flink 配置项中 task/framework offheap(包括 direct 和 native内存)其中的native内存,以及1.10里managed

Re: Flink 内存类型相关疑问

2020-03-09 文章 zhisheng
hi,xintong, 我是 zhisheng,留意到你在回答 Flink 1.10 中到内存分配的问题,刚好我也继续问一个我的疑问。因为我在 YadongXie 发起的 FLIP-102 中关于 TaskManager UI 内存分配的展示,Non-heap 主要是由 MetaSpace 和 Overhead 组成的,如下图所示: http://zhisheng-blog.oss-cn-hangzhou.aliyuncs.com/2020-03-09-152736.png

Re: Flink 内存类型相关疑问

2020-03-09 文章 Xintong Song
> > 图1中的Direct类型里面所包含的framework offheap、task offheap以及shuffle就是您讲的“不在 JVM > 堆上但受到 JVM 管理的内存:Direct”么? 是的 > 这部分内存是可以知道其使用情况并在metrics里看到的么? 应该是与metrics中的Direct是对应的(因为绝大多数情况我们没有使用Mapped Buffer),这里细节我记不太清楚了最好再确认下。 另外,flink 1.10里将RocksDBStateBackend改为使用managed memory,不过网页上显示的是managed >

回复:Flink 内存类型相关疑问

2020-03-09 文章 pkuvisdudu
非常详细的解答,非常感谢~~ 还有一些小疑问。图1中的Direct类型里面所包含的framework offheap、task offheap以及shuffle就是您讲的“不在 JVM 堆上但受到 JVM 管理的内存:Direct”么?这部分内存是可以知道其使用情况并在metrics里看到的么? 另外,flink 1.10里将RocksDBStateBackend改为使用managed memory,不过网页上显示的是managed memory统一使用offheap内存,您的解答里说的是native内存,不知道是不是您说的“完全不受 JVM

Re: Flink 内存类型相关疑问

2020-03-08 文章 Xintong Song
Hi, 关于你的几个问题: 1. 关于 JVM 的内存,堆内存(Heap Memory)的定义通常是比较清晰的,但堆外/非堆内存(Off-Heap/Non-Heap Memory)的定义却有很多不同的版本,这应该是导致你困惑的主要原因。让我们先抛开这些名词,本质上 Java 应用使用的内存(不包括 JVM 自身的开销)可以分为三类: - JVM 堆内存:Heap - 不在 JVM 堆上但受到 JVM 管理的内存:Direct - 完全不受 JVM 管理的内存:Native Direct 内存是直接映射到 JVM 虚拟机外部的内存空间,但是其用量又受到 JVM