谢谢!因为我是一个机器作为一个TM,flink配置文件中默认的taskmanager.memory.process.size大小是1728m,然后日志里面显示堆内存512。 如果我把这个参数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 [] - FinalTaskExecutorMemory configuration: INFO [] - TotalProcessMemory: 1.688gb (1811939328 bytes) INFO [] - TotalFlinkMemory: 1.250gb (1342177280 bytes) INFO [] - TotalJVMHeapMemory: 512.000mb (536870902 bytes) INFO [] - Framework: 128.000mb (134217728 bytes) INFO [] - Task: 384.000mb (402653174 bytes) INFO [] - TotalOff-heap Memory: 768.000mb (805306378 bytes) INFO [] - Managed: 512.000mb (536870920 bytes) INFO [] - TotalJVMDirectMemory: 256.000mb (268435458 bytes) INFO [] - Framework: 128.000mb (134217728 bytes) INFO [] - Task: 0 bytes INFO [] - Network: 128.000mb (134217730 bytes) INFO [] - JVMMetaspace: 256.000mb (268435456 bytes) INFO [] - JVMOverhead: 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核心以及那么大的内存是没有被使用然后浪费了吗? >> >> >> 期待回复,多谢!
