内存管理参数
下表介绍用于管理 Vertica 内存利用率的参数。
当心
只能在 Vertica 支持的指导下修改这些参数。- 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_TYPE
为MEMORY_REPORT
。要禁用此阈值的轮询,请将参数设置为 0。
默认值: 0.93
- MemoryPollerTrimThreshold
- 内存轮询器开始检查是否修剪 glibc 分配的内存的阈值。
内存轮询器将
MemoryPollerTrimThreshold
(默认设置为 0.83)与以下表达式进行比较:RSS / available‑memory
如果此表达式的计算结果大于
MemoryPollerTrimThreshold
,则内存轮询器开始检查下一个阈值(在MemoryPollerMallocBloatThreshold
中设置)是否存在 glibc 内存膨胀。要禁用此阈值的轮询,请将参数设置为 0。这样做也会禁用
MemoryPollerMallocBloatThreshold
的轮询。默认值: 0.83