内存管理参数

下表介绍用于管理 Vertica 内存利用率的参数。

查询 CONFIGURATION_PARAMETERS 系统表以确定哪些级别(节点、会话、用户、数据库)对给定参数有效。
MemoryPollerIntervalSec
指定 Vertica 内存轮询器检查 Vertica 内存利用率是否低于几个配置参数的阈值的频率(以秒为单位,见下文):
  • MemoryPollerMallocBloatThreshold

  • MemoryPollerReportThreshold

  • MemoryPollerTrimThreshold

默认值: 2

MemoryPollerMallocBloatThreshold
glibc 内存膨胀的阈值。

内存轮询器将调用 glibc 函数 malloc_info(),以获取 malloc 中的空闲内存量。然后它将 MemoryPollerMallocBloatThreshold(默认设置为 0.3)与以下表达式进行比较:

free‑memory‑in‑malloc / RSS

如果此表达式的计算结果大于 MemoryPollerMallocBloatThreshold,内存轮询器将调用 glibc 函数 malloc_trim()。此函数从 malloc 中回收空闲内存,并将其返回给操作系统。调用 malloc_trim() 的详细信息将写入系统表 MEMORY_EVENTS

要禁用此阈值的轮询,请将参数设置为 0。

默认值: 0.3

MemoryPollerReportThreshold
确定 Vertica 内存轮询器是否写入报告的内存利用率阈值。

内存轮询器将 MemoryPollerReportThreshold 与以下表达式进行比较:

RSS / available‑memory

当此表达式的计算结果大于 MemoryPollerReportThreshold(默认设置为 0.93)时,内存轮询器会将报告写入 Vertica 工作目录中的 MemoryReport.log。此报告包括有关 Vertica 内存池、单个查询和会话消耗的内存量等信息。内存轮询器还将报告作为事件记录在系统表 MEMORY_EVENTS 中,并设置 EVENT_TYPEMEMORY_REPORT

要禁用此阈值的轮询,请将参数设置为 0。

默认值: 0.93

MemoryPollerTrimThreshold
内存轮询器开始检查是否修剪 glibc 分配的内存的阈值。

内存轮询器将 MemoryPollerTrimThreshold(默认设置为 0.83)与以下表达式进行比较:

RSS / available‑memory

如果此表达式的计算结果大于 MemoryPollerTrimThreshold,则内存轮询器开始检查下一个阈值(在 MemoryPollerMallocBloatThreshold 中设置)是否存在 glibc 内存膨胀。

要禁用此阈值的轮询,请将参数设置为 0。这样做也会禁用 MemoryPollerMallocBloatThreshold 的轮询。

默认值: 0.83