目录

  • 1. presto的内存结构
  • 2. 参考文献

1. presto的内存结构

下图是presto-worker节点的内存示意图:
图片来源于互联网
可以粗略的认为presto的jvm.properties配置文件中的jvm堆内存会被分为3份:

  1. 系统内存池(SystemMemoryPool)
  2. 保留内存池(ReservedMemoryPool)
  3. 普通内存池(GeneralMemoryPool)

这三者的区别:

  • System Pool 是用来保留给系统使用的,默认为40%的内存空间留给系统使用。
  • Reserved PoolGeneral Pool 是用来分配query运行时内存的。
    其中大部分的query使用general Pool。 而最大的一个query,使用Reserved Pool, 所以Reserved Pool的空间等同于一个query在一个机器上运行使用的最大空间大小。
    General则享有除了System Pool和General Pool之外的其他内存空间。

presto的官方文档中有几个内存配置项:

  • 单个节点维度的内存配置项:

    • query.max-memory-per-node一个 query可以使用的最大内存(用户内存),这对应的就是Reserved Pool的内存。默认jvm堆内存*0.1
    • query.max-total-memory-per-node一个 query可以使用的最大内存(用户内存+系统内存,即包含系SystemMemoryPool内存),默认jvm堆内存*0.3
    • memory.heap-headroom-per-node,非查询使用的内存 。不确定是否属于SystemMemoryPool
  • presto集群维度的内存配置项:

    • query.max-memory,在presto集群中,一个query可以使用的最大内存(用户内存)。默认20G
    • query.max-total-memory,在presto集群中,一个query可以使用的最大内存(用户内存+系统内存,即包含系SystemMemoryPool内存)。默认query.max-memory*2

举个例子,presto-worker机器配置为32C128G,worker节点数为8,按如下进行分配:

  • presto的jvm堆内存分配70G,
  • query.max-memory-per-node分配40G,
  • query.max-total-memory-per-node分配45G,
  • query.max-memory分配320G,40G*8=320G,
  • query.max-total-memory分配360G,45G*8=360G,
  • memory.heap-headroom-per-node分配21G,jvm堆内存*0.3=70G*0.3=21G(假如走的默认配置)。

根据上述配置可推出,

  • 耗费内存最大的 一个 query,

    • 在每个worker上能使用的内存=query.max-total-memory-per-node=45G,
    • 在整个presto集群上能使用的内存=query.max-total-memory=360G。
  • 其他query,
    • 在每个worker上能使用的内存=jvm堆内存 - query.max-total-memory-per-node - memory.heap-headroom-per-node = 70G - 45G - 21G = 4G,
    • 在整个presto集群上能使用的内存=4G*8=32G,感觉这里给少了。。

注:这个配置不一定合理,只是举这个例子来理解presto的内存配置。

2. 参考文献

[1] 深入理解Presto(3):Presto内存管理
[2] Presto内存调优及原理(基础篇)
[3] Presto 0.269 Documentation

presto内存配置相关推荐

  1. Presto内存管理源码分析

    1. 内存池初始化 初始化代码在LocalMemoryManager中,启动时将内存分为3个内存池,分别是: RESERVED_POOL:预留内存池,用于执行最耗费内存资源的查询. GENERAL_P ...

  2. dell服务器清空系统空间,PowerEdge 服务器上的内存配置错误。

    本文介绍常见内存配置错误及其解决方法. 常见错误表 128 位高级 ECC 模式处于禁用状态.对于 128 位高级 ECC,必须成对安装 DIMM.DIMM 对必须在大小和几何形状上匹配. 原因: 已 ...

  3. tomcat 内存配置学习总结

    修改 tomcat 内存 http://www.cnblogs.com/quietwalk/archive/2012/11/05/2755199.html 在Jetty 的VM参数中设置:  -Xms ...

  4. 手工计算YARN和MapReduce、tez内存配置设置

    1.1.HDP YARN MapReduce参数调优建议 转自:https://blog.csdn.net/mnasd/article/details/81202908 1.1.1.RM的内存资源配置 ...

  5. 设置Hadoop的 dataNode的单个Map的内存配置

    1.进入hadoop的配置目录 ,找到 环境变量的 $HADOOP_HOME cd $HADOOP_HOME 2.修改dataNode 节点的 单个map的能使用的内存配置 找到配置的文件: /opt ...

  6. Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

    Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案 问题 linux的jetty下发布程序后再启动jetty服 ...

  7. 浅谈优化SQLServer数据库服务器内存配置的策略

    引文 http://demo.nbarticle.com/view/2004/8/9/view_1827.htm 农业银行总行1998年以来正式推广了新版网络版综合业务统计信息系统,该系统是基于Win ...

  8. dell服务器报内存配置不正确,DELL 服务器系统提示错误解决的若干办法

    <DELL 服务器系统提示错误解决的若干办法>由会员分享,可在线阅读,更多相关<DELL 服务器系统提示错误解决的若干办法(9页珍藏版)>请在人人文库网上搜索. 1.DELL ...

  9. Yarn简单介绍及内存配置

    在这篇博客中,主要介绍了Yarn对MRv1的改进,以及Yarn简单的内存配置和Yarn的资源抽象container. 我么知道MRv1存在的主要问题是:在运行时,JobTracker既负责资源管理又负 ...

最新文章

  1. 一些JSON相关的函数
  2. 有待试用,查看是谁锁住了我的数据库
  3. mysql数据清洗_mysql数据库如何实现亿级数据快速清理
  4. alipay html5 app,H5App支付宝开发详解
  5. Objc基础学习记录5
  6. linux 基准测试_如何对Linux系统进行基准测试:3个开源基准测试工具
  7. Spring MVC Ajax返回中文乱码
  8. FPGA复位激励编写(方法一)
  9. 基于JAVA+Swing+MYSQL的宿舍管理系统
  10. 安装fitz报错_动态 - Fitz999的个人空间 - OSCHINA
  11. 显卡bind 驱动 linux,Linux 配置bind 服務
  12. Express框架中如何引用ejs模板引擎
  13. 响应内容类型为CSV
  14. 百度地图API学习之路(1)
  15. 2021国赛数学建模赛题与分析
  16. 计算机控制液压同步顶升系统,BOLTING博霆1600吨PLC控制全自动同步顶升系统(数控智能油缸同步控制系统)技术特点...
  17. java可视化tiff转pdf工具
  18. 计算机设备管理器没有WDS,hp 1136 电脑重启后 自动脱机 ,打印机服务也开起来,要把驱动删除掉,重新安装驱动才可以...
  19. 【Web】CSS(No.33)Css页面布局经典案例(三)《京东首页》
  20. 新做的网络电视播放器,欢迎试用

热门文章

  1. 李洪强iOS经典面试题144-数据存储
  2. MATLAB编写代码来模拟消色差超透镜的行为
  3. [计算机毕业设计]聚类分析算法
  4. Android中实现ProgressBar菊花旋转的动画效果
  5. 开发中都用到了那些设计模式?用在什么场合?
  6. python基基基基基基础知识
  7. 数学-机器学习-线性分类
  8. Windows 10恢复照片查看器
  9. zuul整合nacos_zuul使用nacos作为服务中心
  10. note9 android8.1,三星Note8和Note9全面对比,安卓机皇哪个强?