【问题标题】:Clearly explanation of all kinds of memory in PrestoPresto中各种内存的解释清楚
【发布时间】:2019-02-08 05:16:40
【问题描述】:

SO对 Presto 中的内存设置感到困惑。请在下面查看:

  1. query.max-memory

  2. query.max-memory-per-node (base config)

  3. query.max-total-memory (release in 0.205)

  4. resources.reserved-system-memory (admin properties)

  5. 内存池(通用池和预留池)

我能找到的就这些了。

这是我的 Presto 设置:

  1. etc/config.properties

query.max-memory=2.25GB
query.max-total-memory=2.25GB
query.max-memory-per-node=0.75GB

  1. jvm: -Xmx3G -Xms3G

根据我的设置,我发现了这些规则:

  1. query.max-memory-per-node

  2. General Pool = jvm * 0.4,与resources.reserved-system-memory的默认值相同

  3. 预留池 = jvm * 0.3

这是我的问题:

  1. 各种内存设置之间的关系。 (比如resources.reserved-system-memory是General Pool?query.max-total-memory=用户内存+系统内存,什么是用户内存和系统内存?)

  2. 通用池和保留池的用途是什么?我怎样才能改变他们的价值观?

  3. General Pool(40% of jvm),Reserved Pool(30% of jvm),jvm最后30%在哪里?或 Presto 如何分配我的 3GB jvm 内存?

【问题讨论】:

    标签: presto


    【解决方案1】:
    reserved = query.max-memory-per-node 
    system = 40% of heap 
    general = heap - system - reserved 
    

    【讨论】:

    • 来自上面的“关于内存管理器”链接:它的工作方式是保留池获得 X GB 的内存,其中 X 是可以提交的最大查询的大小,一般pool 获取所有剩余的内存。所有提交的查询都在通用池中开始,但如果它已满,则将最大的查询提升到保留池。由于保留池有足够的内存来运行最大的查询,该查询将始终完成,因此集群永远不会死锁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多