taskmanager的内存设置为15G但实际的heap只有10G
看了tm内存分配的源码1.计算cutoff(15GB * 0.25) 2.计算heap大小(heap计算的入参是15GB - cutoff大小) 3.计算offheap大小(offheap的大小等于15GB-heap大小) offheap就是最终的-XX:MaxDirectMemorySize的大小 想请教下MaxDirectMemorySize的大小有必要设置这么大吗? |
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的大小有必要设置这么大吗? |
谢谢您的回答,我还有个问题想请教下
当tm的内存超过一定大小,-XX:NewSize的大小都是一样的 例如tm设置15G -XX:NewSize=2442764288 tm设置20G 新生代还是 -XX:NewSize=2442764288 这是为什么呢? ------------------ 原始邮件 ------------------ 发件人: "Xintong Song"<[hidden email]>; 发送时间: 2019年12月31日(星期二) 晚上6:10 收件人: "user-zh"<[hidden email]>; 主题: 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]> 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的大小有必要设置这么大吗? |
我不确定你说的 -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 > 这是为什么呢? > > > > > ------------------ 原始邮件 ------------------ > 发件人: "Xintong Song"<[hidden email]>; > 发送时间: 2019年12月31日(星期二) 晚上6:10 > 收件人: "user-zh"<[hidden email]>; > > 主题: 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]> 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的大小有必要设置这么大吗? |
这个是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 > 这是为什么呢? > > > > > ------------------ 原始邮件 ------------------ > 发件人: "Xintong Song"<[hidden email]>; > 发送时间: 2019年12月31日(星期二) 晚上6:10 > 收件人: "user-zh"<[hidden email]>; > > 主题: 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]> 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的大小有必要设置这么大吗? |
我知道 -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 > > 这是为什么呢? > > > > > > > > > > ------------------ 原始邮件 ------------------ > > 发件人: "Xintong Song"<[hidden email]>; > > 发送时间: 2019年12月31日(星期二) 晚上6:10 > > 收件人: "user-zh"<[hidden email]>; > > > > 主题: 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]> 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的大小有必要设置这么大吗? > |
这个参数配置我是在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内存分配的问题 我的意思是说,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 > > 这是为什么呢? > > > > > > > > > > ------------------ 原始邮件 ------------------ > > 发件人: "Xintong Song"<[hidden email]>; > > 发送时间: 2019年12月31日(星期二) 晚上6:10 > > 收件人: "user-zh"<[hidden email]>; > > > > 主题: 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]> 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的大小有必要设置这么大吗? > |
我这边看不到你的图片,不知道是什么原因。
你可以用 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 > > > 这是为什么呢? > > > > > > > > > > > > > > > ------------------ 原始邮件 ------------------ > > > 发件人: "Xintong Song"<[hidden email]>; > > > 发送时间: 2019年12月31日(星期二) 晚上6:10 > > > 收件人: "user-zh"<[hidden email]>; > > > > > > 主题: 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]> 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的大小有必要设置这么大吗? > > > |
Free forum by Nabble | Edit this page |