当前位置: 首页 > news >正文

flink-taskmanager内存计算

自flink1.10以后flink重构了taskmanager内存模型,如下图:

其中ProcessMemory=(FlinkMemory+Metaspace+Overhead)

FlinkMemory=(JVMHeap+ManagedMemory+DirectMemory)

JVMHeap=FrameHeap+TaskHeap

DirectMemory=(FramewokOffHeap+TaskOffHeap+Network)

上述内存对应jvm参数:

DirectMemory -> -XX:MaxDirectMemorySize

JVMHeap -> -Xms/-Xmx

Metaspace -> -XX:MaxMetaspaceSize

假设运行时候有如下参数:

-Dtaskmanager.numberOfTaskSlots=2 \
-Dtaskmanager.memory.process.size=12g \
-Dtaskmanager.memory.managed.fraction=0.5 \
-Dtaskmanager.memory.jvm-overhead.fraction=0.4 \

由于我配置了memory.process.size则flink计算内存时候会通过ProcessMemoryUtils#deriveProcessSpecWithTotalProcessMemory这个方法进行内存计算,时序图如下:

 咱们按照这个方法来计算下各个区域的内存大小:

区域大小备注
TotalProcessMemory

12288m(12g)

向yarn/k8s申请的进程可以使用的最大内存
MetaspaceMemory256m(0.25g)默认值
OverheadMemory

1024m(1g)

计算规则TotalProcessMemory*jvm-overhead.fraction=4.8gb

但是因为jvm-overhead.max是1gb,所以就取1gb

TotalFlinkMemory

11008m(10.75g)

12288-1024-256
ManagedMemory

5504m(5.375g)

TotalFlinkMemory*managed.fraction
NetworkMemory

1024m(1g)

TotalFlinkMemory*network.fraction=11008*0.1=1100.8mb

但是因为taskmanager.memory.network.max为1gb所以就是1gb

frameworkOffHeapMemory
 
128m(0.125gb)默认值
taskOffHeapMemory128m(0.125gb)默认值
HeapMemory4224m(4.125gb)TotalFlinkMemory-ManagedMemory-NetworkMemory-frameworkOffHeapMemory-taskOffHeapMemory

下图是flink-ui界面的内存分配

该界面中四舍五入保留2位小数点,内存与上述表格中一致。 

相关文章:

  • 大数据复习(day03)
  • C++ 优先队列 priority_queue 使用篇
  • 同事嫌我改Bug慢,原来是没掌握这些代码Debug技巧
  • 图文讲解带你拿捏MyBatis(一)——MyBatis入门
  • [Python]Django类视图
  • 重识Nginx - 12 SSL/TLS 浅析
  • 神经网络做多元线性回归,神经网络是线性模型吗
  • 如何查看Debian/Ubuntu和RHEL/AlmaLinux/Rocky软件包的更新日志
  • Java—多线程
  • 【第九篇】商城系统-商城首页功能
  • 【SpringBoot+MyBatisPlus】系统全局异常处理器的使用以及添加员工功能的实现
  • FreeRTOS大杂烩
  • 都这麽大了还不快了解防病毒网关?
  • HTML 笔记(八):SVG
  • 15.5 - 边界值法
  • 【Amaple教程】5. 插件
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Angular 响应式表单之下拉框
  • C# 免费离线人脸识别 2.0 Demo
  • download使用浅析
  • HTML5新特性总结
  • JS 面试题总结
  • SAP云平台里Global Account和Sub Account的关系
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue2.0项目引入element-ui
  • vuex 学习笔记 01
  • windows下mongoDB的环境配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从0到1:PostCSS 插件开发最佳实践
  • 多线程 start 和 run 方法到底有什么区别?
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 给新手的新浪微博 SDK 集成教程【一】
  • 排序(1):冒泡排序
  • 前端自动化解决方案
  • 巧用 TypeScript (一)
  • 如何进阶一名有竞争力的程序员?
  • 数据结构java版之冒泡排序及优化
  • 通过npm或yarn自动生成vue组件
  • 一些css基础学习笔记
  • 用简单代码看卷积组块发展
  • 走向全栈之MongoDB的使用
  • scrapy中间件源码分析及常用中间件大全
  • 仓管云——企业云erp功能有哪些?
  • 容器镜像
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #QT(串口助手-界面)
  • #微信小程序:微信小程序常见的配置传旨
  • %@ page import=%的用法
  • (145)光线追踪距离场柔和阴影
  • (pojstep1.3.1)1017(构造法模拟)
  • (pytorch进阶之路)扩散概率模型
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (独孤九剑)--文件系统