Re: Re: flink的cpu和内存资源分配

2021-04-11 文章 Xintong Song
你截图的日志也明确显示了各部分的内存大小分别是多少,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
> 
> 大小是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 [] - 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"  写道:
> >>
> >> 现在比如一个节点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.  wrote:
> >
> >> 得知flink的内存是隔离的,cpu不能隔离;
> >> 现在比如一个节点16核cpu 16g内存,4个slot;
> >> 通过调试和日志,发现每个slot拥有1个cpu,那么4个slot就占用4个cpu核心。且堆内存为512M。
> >> 这样的话其他12个cpu核心以及那么大的内存是没有被使用然后浪费了吗?
> >>
> >>
> >> 期待回复,多谢!
>
>
>
>
>


Re:Re: flink的cpu和内存资源分配

2021-04-11 文章 penguin.
谢谢!因为我是一个机器作为一个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"  写道:
>>
>> 现在比如一个节点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.  wrote:
>
>> 得知flink的内存是隔离的,cpu不能隔离;
>> 现在比如一个节点16核cpu 16g内存,4个slot;
>> 通过调试和日志,发现每个slot拥有1个cpu,那么4个slot就占用4个cpu核心。且堆内存为512M。
>> 这样的话其他12个cpu核心以及那么大的内存是没有被使用然后浪费了吗?
>>
>>
>> 期待回复,多谢!


Re: flink的cpu和内存资源分配

2021-04-11 文章 Xintong Song
>
> 现在比如一个节点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.  wrote:

> 得知flink的内存是隔离的,cpu不能隔离;
> 现在比如一个节点16核cpu 16g内存,4个slot;
> 通过调试和日志,发现每个slot拥有1个cpu,那么4个slot就占用4个cpu核心。且堆内存为512M。
> 这样的话其他12个cpu核心以及那么大的内存是没有被使用然后浪费了吗?
>
>
> 期待回复,多谢!


flink的cpu和内存资源分配

2021-04-11 文章 penguin.
得知flink的内存是隔离的,cpu不能隔离;
现在比如一个节点16核cpu 16g内存,4个slot;
通过调试和日志,发现每个slot拥有1个cpu,那么4个slot就占用4个cpu核心。且堆内存为512M。
这样的话其他12个cpu核心以及那么大的内存是没有被使用然后浪费了吗?


期待回复,多谢!