flink内存分配的问题

classic Classic list List threaded Threaded
8 messages Options
cs
Reply | Threaded
Open this post in threaded view
|

flink内存分配的问题

cs
taskmanager的内存设置为15G但实际的heap只有10G
看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB - cutoff大小) 3.计算offheap大小(offheap的大小等于15GB-heap大小)
offheap就是最终的-XX:MaxDirectMemorySize的大小
想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
Reply | Threaded
Open this post in threaded view
|

Re: flink内存分配的问题

Xintong Song
FLINK TM 中是用到了大量的堆外内存的,除了通常意义的 JVM 的栈空间、方法区等堆外开销外,还包括网络 buffer、batch
缓存、RocksDB等。
默认配置是相对保守,为了保证大多数情况下预留出足够的堆外内存。具体是否设置过大了,要看具体运行的作业的情况。可以尝试通过配置'containerized.heap-cutoff-ratio'进行调整。

另外,即将发布的flink 1.10版本中对TM的内存计算进行了优化,不再采用cutoff而是根据用途列出了更具体的配置项,欢迎试用

Thank you~

Xintong Song



On Tue, Dec 31, 2019 at 5:53 PM cs <[hidden email]> wrote:

> taskmanager的内存设置为15G但实际的heap只有10G
> 看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB - cutoff大小)
> 3.计算offheap大小(offheap的大小等于15GB-heap大小)
> offheap就是最终的-XX:MaxDirectMemorySize的大小
> 想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
cs
Reply | Threaded
Open this post in threaded view
|

回复: flink内存分配的问题

cs
谢谢您的回答,我还有个问题想请教下
当tm的内存超过一定大小,-XX:NewSize的大小都是一样的
例如tm设置15G -XX:NewSize=2442764288
tm设置20G 新生代还是 -XX:NewSize=2442764288
这是为什么呢?




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Xintong Song"<[hidden email]&gt;;
发送时间:&nbsp;2019年12月31日(星期二) 晚上6:10
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: flink内存分配的问题



FLINK TM 中是用到了大量的堆外内存的,除了通常意义的 JVM 的栈空间、方法区等堆外开销外,还包括网络 buffer、batch
缓存、RocksDB等。
默认配置是相对保守,为了保证大多数情况下预留出足够的堆外内存。具体是否设置过大了,要看具体运行的作业的情况。可以尝试通过配置'containerized.heap-cutoff-ratio'进行调整。

另外,即将发布的flink 1.10版本中对TM的内存计算进行了优化,不再采用cutoff而是根据用途列出了更具体的配置项,欢迎试用

Thank you~

Xintong Song



On Tue, Dec 31, 2019 at 5:53 PM cs <[hidden email]&gt; wrote:

&gt; taskmanager的内存设置为15G但实际的heap只有10G
&gt; 看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB - cutoff大小)
&gt; 3.计算offheap大小(offheap的大小等于15GB-heap大小)
&gt; offheap就是最终的-XX:MaxDirectMemorySize的大小
&gt; 想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
Reply | Threaded
Open this post in threaded view
|

Re: flink内存分配的问题

Xintong Song
我不确定你说的 -XX:NewSize=2442764288 是从哪里看到的,据我所知 flink 似乎没有设置这个参数。另外你用的 flink
版本是哪个版本?

Thank you~

Xintong Song



On Tue, Dec 31, 2019 at 8:52 PM cs <[hidden email]> wrote:

> 谢谢您的回答,我还有个问题想请教下
> 当tm的内存超过一定大小,-XX:NewSize的大小都是一样的
> 例如tm设置15G -XX:NewSize=2442764288
> tm设置20G 新生代还是 -XX:NewSize=2442764288
> 这是为什么呢?
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Xintong Song"<[hidden email]&gt;;
> 发送时间:&nbsp;2019年12月31日(星期二) 晚上6:10
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: flink内存分配的问题
>
>
>
> FLINK TM 中是用到了大量的堆外内存的,除了通常意义的 JVM 的栈空间、方法区等堆外开销外,还包括网络 buffer、batch
> 缓存、RocksDB等。
>
> 默认配置是相对保守,为了保证大多数情况下预留出足够的堆外内存。具体是否设置过大了,要看具体运行的作业的情况。可以尝试通过配置'containerized.heap-cutoff-ratio'进行调整。
>
> 另外,即将发布的flink 1.10版本中对TM的内存计算进行了优化,不再采用cutoff而是根据用途列出了更具体的配置项,欢迎试用
>
> Thank you~
>
> Xintong Song
>
>
>
> On Tue, Dec 31, 2019 at 5:53 PM cs <[hidden email]&gt; wrote:
>
> &gt; taskmanager的内存设置为15G但实际的heap只有10G
> &gt; 看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB -
> cutoff大小)
> &gt; 3.计算offheap大小(offheap的大小等于15GB-heap大小)
> &gt; offheap就是最终的-XX:MaxDirectMemorySize的大小
> &gt; 想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
Reply | Threaded
Open this post in threaded view
|

Re: Re: flink内存分配的问题

pengchenglins@163.com
这个是jdk的参数,可以通过flink的env.java.opts配置
 
发件人: Xintong Song
发送时间: 2020-01-02 09:54
收件人: user-zh
主题: Re: flink内存分配的问题
我不确定你说的 -XX:NewSize=2442764288 是从哪里看到的,据我所知 flink 似乎没有设置这个参数。另外你用的 flink
版本是哪个版本?
 
Thank you~
 
Xintong Song
 
 
 
On Tue, Dec 31, 2019 at 8:52 PM cs <[hidden email]> wrote:
 

> 谢谢您的回答,我还有个问题想请教下
> 当tm的内存超过一定大小,-XX:NewSize的大小都是一样的
> 例如tm设置15G -XX:NewSize=2442764288
> tm设置20G 新生代还是 -XX:NewSize=2442764288
> 这是为什么呢?
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Xintong Song"<[hidden email]&gt;;
> 发送时间:&nbsp;2019年12月31日(星期二) 晚上6:10
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: flink内存分配的问题
>
>
>
> FLINK TM 中是用到了大量的堆外内存的,除了通常意义的 JVM 的栈空间、方法区等堆外开销外,还包括网络 buffer、batch
> 缓存、RocksDB等。
>
> 默认配置是相对保守,为了保证大多数情况下预留出足够的堆外内存。具体是否设置过大了,要看具体运行的作业的情况。可以尝试通过配置'containerized.heap-cutoff-ratio'进行调整。
>
> 另外,即将发布的flink 1.10版本中对TM的内存计算进行了优化,不再采用cutoff而是根据用途列出了更具体的配置项,欢迎试用
>
> Thank you~
>
> Xintong Song
>
>
>
> On Tue, Dec 31, 2019 at 5:53 PM cs <[hidden email]&gt; wrote:
>
> &gt; taskmanager的内存设置为15G但实际的heap只有10G
> &gt; 看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB -
> cutoff大小)
> &gt; 3.计算offheap大小(offheap的大小等于15GB-heap大小)
> &gt; offheap就是最终的-XX:MaxDirectMemorySize的大小
> &gt; 想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
Reply | Threaded
Open this post in threaded view
|

Re: Re: flink内存分配的问题

Xintong Song
我知道 -XX:NewSize 是 JVM 的参数。
我的意思是说,Flink 并没有自动地去设置 JVM 的这个参数,你是从哪里看到这个参数被设置成了 2442764288 的呢?

Thank you~

Xintong Song



On Thu, Jan 2, 2020 at 10:03 AM pengchenglin <[hidden email]> wrote:

> 这个是jdk的参数,可以通过flink的env.java.opts配置
>
> 发件人: Xintong Song
> 发送时间: 2020-01-02 09:54
> 收件人: user-zh
> 主题: Re: flink内存分配的问题
> 我不确定你说的 -XX:NewSize=2442764288 是从哪里看到的,据我所知 flink 似乎没有设置这个参数。另外你用的 flink
> 版本是哪个版本?
>
> Thank you~
>
> Xintong Song
>
>
>
> On Tue, Dec 31, 2019 at 8:52 PM cs <[hidden email]> wrote:
>
> > 谢谢您的回答,我还有个问题想请教下
> > 当tm的内存超过一定大小,-XX:NewSize的大小都是一样的
> > 例如tm设置15G -XX:NewSize=2442764288
> > tm设置20G 新生代还是 -XX:NewSize=2442764288
> > 这是为什么呢?
> >
> >
> >
> >
> > ------------------&nbsp;原始邮件&nbsp;------------------
> > 发件人:&nbsp;"Xintong Song"<[hidden email]&gt;;
> > 发送时间:&nbsp;2019年12月31日(星期二) 晚上6:10
> > 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
> >
> > 主题:&nbsp;Re: flink内存分配的问题
> >
> >
> >
> > FLINK TM 中是用到了大量的堆外内存的,除了通常意义的 JVM 的栈空间、方法区等堆外开销外,还包括网络 buffer、batch
> > 缓存、RocksDB等。
> >
> >
> 默认配置是相对保守,为了保证大多数情况下预留出足够的堆外内存。具体是否设置过大了,要看具体运行的作业的情况。可以尝试通过配置'containerized.heap-cutoff-ratio'进行调整。
> >
> > 另外,即将发布的flink 1.10版本中对TM的内存计算进行了优化,不再采用cutoff而是根据用途列出了更具体的配置项,欢迎试用
> >
> > Thank you~
> >
> > Xintong Song
> >
> >
> >
> > On Tue, Dec 31, 2019 at 5:53 PM cs <[hidden email]&gt; wrote:
> >
> > &gt; taskmanager的内存设置为15G但实际的heap只有10G
> > &gt; 看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB -
> > cutoff大小)
> > &gt; 3.计算offheap大小(offheap的大小等于15GB-heap大小)
> > &gt; offheap就是最终的-XX:MaxDirectMemorySize的大小
> > &gt; 想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
>
cs
Reply | Threaded
Open this post in threaded view
|

回复: Re: flink内存分配的问题

cs
这个参数配置我是在tm的gc日志中看到的,flink的版本是1.8
heap的总大小约为10.25GB,理论上新生代占总heap的1/3也就应该是约3.41GB
但是当heap无论怎么增加,新生代都是2442764288byte
莫非是jvm自己设置的问题?

------------------ 原始邮件 ------------------
发件人: "Xintong Song"<[hidden email]>;
发送时间: 2020年1月2日(星期四) 上午10:43
收件人: "user-zh"<[hidden email]>;
主题: Re: Re: flink内存分配的问题

我知道 -XX:NewSize 是 JVM 的参数。
我的意思是说,Flink 并没有自动地去设置 JVM 的这个参数,你是从哪里看到这个参数被设置成了 2442764288 的呢?

Thank you~

Xintong Song



On Thu, Jan 2, 2020 at 10:03 AM pengchenglin <[hidden email]> wrote:

> 这个是jdk的参数,可以通过flink的env.java.opts配置
>
> 发件人: Xintong Song
> 发送时间: 2020-01-02 09:54
> 收件人: user-zh
> 主题: Re: flink内存分配的问题
> 我不确定你说的 -XX:NewSize=2442764288 是从哪里看到的,据我所知 flink 似乎没有设置这个参数。另外你用的 flink
> 版本是哪个版本?
>
> Thank you~
>
> Xintong Song
>
>
>
> On Tue, Dec 31, 2019 at 8:52 PM cs <[hidden email]> wrote:
>
> > 谢谢您的回答,我还有个问题想请教下
> > 当tm的内存超过一定大小,-XX:NewSize的大小都是一样的
> > 例如tm设置15G -XX:NewSize=2442764288
> > tm设置20G 新生代还是 -XX:NewSize=2442764288
> > 这是为什么呢?
> >
> >
> >
> >
> > ------------------&nbsp;原始邮件&nbsp;------------------
> > 发件人:&nbsp;"Xintong Song"<[hidden email]&gt;;
> > 发送时间:&nbsp;2019年12月31日(星期二) 晚上6:10
> > 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
> >
> > 主题:&nbsp;Re: flink内存分配的问题
> >
> >
> >
> > FLINK TM 中是用到了大量的堆外内存的,除了通常意义的 JVM 的栈空间、方法区等堆外开销外,还包括网络 buffer、batch
> > 缓存、RocksDB等。
> >
> >
> 默认配置是相对保守,为了保证大多数情况下预留出足够的堆外内存。具体是否设置过大了,要看具体运行的作业的情况。可以尝试通过配置'containerized.heap-cutoff-ratio'进行调整。
> >
> > 另外,即将发布的flink 1.10版本中对TM的内存计算进行了优化,不再采用cutoff而是根据用途列出了更具体的配置项,欢迎试用
> >
> > Thank you~
> >
> > Xintong Song
> >
> >
> >
> > On Tue, Dec 31, 2019 at 5:53 PM cs <[hidden email]&gt; wrote:
> >
> > &gt; taskmanager的内存设置为15G但实际的heap只有10G
> > &gt; 看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB -
> > cutoff大小)
> > &gt; 3.计算offheap大小(offheap的大小等于15GB-heap大小)
> > &gt; offheap就是最终的-XX:MaxDirectMemorySize的大小
> > &gt; 想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: flink内存分配的问题

Xintong Song
我这边看不到你的图片,不知道是什么原因。
你可以用 ps 一下 TM 的 JVM 进程,看一下启动命令中 是否明确指定了 -XX:NewSize.
如果指定了,那需要检查一下你的配置是否在什么地方设置了 env.java.opts 或者 env.java.opts.taskmanager
如果没指定,那应该就是 JVM 自动设置的了。

Thank you~

Xintong Song



On Thu, Jan 2, 2020 at 1:49 PM cs <[hidden email]> wrote:

> 这个参数配置我是在tm的gc日志中看到的,flink的版本是1.8
> heap的总大小约为10.25GB,理论上新生代占总heap的1/3也就应该是约3.41GB
> 但是当heap无论怎么增加,新生代都是2442764288byte
> 莫非是jvm自己设置的问题?
>
> ------------------ 原始邮件 ------------------
> *发件人:* "Xintong Song"<[hidden email]>;
> *发送时间:* 2020年1月2日(星期四) 上午10:43
> *收件人:* "user-zh"<[hidden email]>;
> *主题:* Re: Re: flink内存分配的问题
>
> 我知道 -XX:NewSize 是 JVM 的参数。
> 我的意思是说,Flink 并没有自动地去设置 JVM 的这个参数,你是从哪里看到这个参数被设置成了 2442764288 的呢?
>
> Thank you~
>
> Xintong Song
>
>
>
> On Thu, Jan 2, 2020 at 10:03 AM pengchenglin <[hidden email]>
> wrote:
>
> > 这个是jdk的参数,可以通过flink的env.java.opts配置
> >
> > 发件人: Xintong Song
> > 发送时间: 2020-01-02 09:54
> > 收件人: user-zh
> > 主题: Re: flink内存分配的问题
> > 我不确定你说的 -XX:NewSize=2442764288 是从哪里看到的,据我所知 flink 似乎没有设置这个参数。另外你用的 flink
> > 版本是哪个版本?
> >
> > Thank you~
> >
> > Xintong Song
> >
> >
> >
> > On Tue, Dec 31, 2019 at 8:52 PM cs <[hidden email]> wrote:
> >
> > > 谢谢您的回答,我还有个问题想请教下
> > > 当tm的内存超过一定大小,-XX:NewSize的大小都是一样的
> > > 例如tm设置15G -XX:NewSize=2442764288
> > > tm设置20G 新生代还是 -XX:NewSize=2442764288
> > > 这是为什么呢?
> > >
> > >
> > >
> > >
> > > ------------------&nbsp;原始邮件&nbsp;------------------
> > > 发件人:&nbsp;"Xintong Song"<[hidden email]&gt;;
> > > 发送时间:&nbsp;2019年12月31日(星期二) 晚上6:10
> > > 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
> > >
> > > 主题:&nbsp;Re: flink内存分配的问题
> > >
> > >
> > >
> > > FLINK TM 中是用到了大量的堆外内存的,除了通常意义的 JVM 的栈空间、方法区等堆外开销外,还包括网络 buffer、batch
> > > 缓存、RocksDB等。
> > >
> > >
> >
> 默认配置是相对保守,为了保证大多数情况下预留出足够的堆外内存。具体是否设置过大了,要看具体运行的作业的情况。可以尝试通过配置'containerized.heap-cutoff-ratio'进行调整。
> > >
> > > 另外,即将发布的flink 1.10版本中对TM的内存计算进行了优化,不再采用cutoff而是根据用途列出了更具体的配置项,欢迎试用
> > >
> > > Thank you~
> > >
> > > Xintong Song
> > >
> > >
> > >
> > > On Tue, Dec 31, 2019 at 5:53 PM cs <[hidden email]&gt; wrote:
> > >
> > > &gt; taskmanager的内存设置为15G但实际的heap只有10G
> > > &gt; 看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB -
> > > cutoff大小)
> > > &gt; 3.计算offheap大小(offheap的大小等于15GB-heap大小)
> > > &gt; offheap就是最终的-XX:MaxDirectMemorySize的大小
> > > &gt; 想请教下MaxDirectMemorySize的大小有必要设置这么大吗?
> >
>