谢谢!因为我是一个机器作为一个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核心以及那么大的内存是没有被使用然后浪费了吗?
>>
>>
>> 期待回复,多谢!

回复