你截图的日志也明确显示了各部分的内存大小分别是多少,heap 只是其中一部分,所有的加起来才是你配置的 1728m。
调整配置是可以让 TM 用到更多的内存,至于能否提升性能,那要看你的计算任务瓶颈是否在内存上。如果瓶颈在 cpu、io 甚至上游数据源,那一味调大内存也帮助不大。 Thank you~ Xintong Song On Mon, Apr 12, 2021 at 10:32 AM penguin. <[email protected]> wrote: > 谢谢!因为我是一个机器作为一个TM,flink配置文件中默认的taskmanager.memory.process.size > <https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#taskmanager-memory-process-size> > 大小是1728m,然后日志里面显示堆内存512。 > 如果我把这个参数taskmanager.memory.process.size > <https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/config.html#taskmanager-memory-process-size> > 调大一点比如4GB,是否会对任务执行的性能有所提升呢? > 默认如下 > INFO [] - The derived from fraction jvm overhead memory (172.800mb ( > 181193935 bytes)) is less than its min value 192.000mb (201326592 bytes), > min value will be used instead > INFO [] - Final TaskExecutor Memory configuration: > INFO [] - Total Process Memory: 1.688gb (1811939328 bytes) > INFO [] - Total Flink Memory: 1.250gb (1342177280 bytes) > INFO [] - Total JVM Heap Memory: 512.000mb (536870902 bytes) > INFO [] - Framework: 128.000mb (134217728 bytes) > INFO [] - Task: 384.000mb (402653174 bytes) > INFO [] - Total Off-heap Memory: 768.000mb (805306378 bytes) > INFO [] - Managed: 512.000mb (536870920 bytes) > INFO [] - Total JVM Direct Memory: 256.000mb (268435458 bytes) > INFO [] - Framework: 128.000mb (134217728 bytes) > INFO [] - Task: 0 bytes > INFO [] - Network: 128.000mb (134217730 bytes) > INFO [] - JVM Metaspace: 256.000mb (268435456 bytes) > INFO [] - JVM Overhead: 192.000mb (201326592 bytes) > > 调为4GB后: > > > > > > Penguin. > > > > > > > > 在 2021-04-12 10:04:32,"Xintong Song" <[email protected]> 写道: > >> > >> 现在比如一个节点16核cpu 16g内存,4个slot; > > > > > >你这里所说的节点,应该指的是 Flink TM 所在的物理机或虚拟机吧。 > > > >你这里混淆了好几个概念 > > > >- 节点、TM、slot 是三个不同层次的概念。16c16g 是针对节点的,4 slot 是针对 TM 的。一个节点是可以有多个 TM的。 > > > >- TM 的内存不仅包括堆内存,还包括其他内存类型,因此 512M 不代表 TM 的内存大小。 > > > >- TM 的 cpu 和内存是否会超用,很大程度上取决于你的运行环境。从 Flink 自身来看,Heap、Direct、Mataspace > >这几种内存都是不会超用的,但是 Native 内存有一部分是有可能超用的,另外 CPU 也是有可能超用的。但是通常 K8s/Yarn > >运行环境中都提供外围的资源限制,比如不允许资源超用或只允许一定比例的资源超用,这个要看具体的环境配置。 > > > > > >可以看一下内存模型与配置相关的几篇官方文档 [1]。 > > > > > >Thank you~ > > > >Xintong Song > > > > > >[1] > >https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/deployment/memory/mem_setup.html > > > >On Sun, Apr 11, 2021 at 9:16 PM penguin. <[email protected]> wrote: > > > >> 得知flink的内存是隔离的,cpu不能隔离; > >> 现在比如一个节点16核cpu 16g内存,4个slot; > >> 通过调试和日志,发现每个slot拥有1个cpu,那么4个slot就占用4个cpu核心。且堆内存为512M。 > >> 这样的话其他12个cpu核心以及那么大的内存是没有被使用然后浪费了吗? > >> > >> > >> 期待回复,多谢! > > > > >
