你截图的日志也明确显示了各部分的内存大小分别是多少,heap 只是其中一部分,所有的加起来才是你配置的 1728m。
调整配置是可以让 TM 用到更多的内存,至于能否提升性能,那要看你的计算任务瓶颈是否在内存上。如果瓶颈在 cpu、io
甚至上游数据源,那一味调大内存也帮助不大。
Thank you~
Xintong Song
On Mon, Apr 12, 2021 at 10:32 AM penguin. wrote:
> 谢谢!因为我是一个机器作为一个TM,flink配置文件中默认的taskmanager.memory.process.size
>
谢谢!因为我是一个机器作为一个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
>
> 现在比如一个节点16核cpu 16g内存,4个slot;
你这里所说的节点,应该指的是 Flink TM 所在的物理机或虚拟机吧。
你这里混淆了好几个概念
- 节点、TM、slot 是三个不同层次的概念。16c16g 是针对节点的,4 slot 是针对 TM 的。一个节点是可以有多个 TM的。
- TM 的内存不仅包括堆内存,还包括其他内存类型,因此 512M 不代表 TM 的内存大小。
- TM 的 cpu 和内存是否会超用,很大程度上取决于你的运行环境。从 Flink 自身来看,Heap、Direct、Mataspace
这几种内存都是不会超用的,但是 Native
得知flink的内存是隔离的,cpu不能隔离;
现在比如一个节点16核cpu 16g内存,4个slot;
通过调试和日志,发现每个slot拥有1个cpu,那么4个slot就占用4个cpu核心。且堆内存为512M。
这样的话其他12个cpu核心以及那么大的内存是没有被使用然后浪费了吗?
期待回复,多谢!