scheduler lmm enable 参数:指定自动的低内存管理设置(SQL 管理 API)

随同 admin()task() 函数,使用 scheduler lmm enable 参数来启动自动的低内存管理并更新低内存阈值设置。

语法

元素 描述 关键考虑
start_threshold_size 您想要数据库服务器保持的空闲内存量。如果内存量少于 start_threshold_size,则服务器自动地释放内存并终止应用。 该值可表示为 SHMTOTAL 配置参数值的百分率或特定数量。如果该值小于 50,则认为是百分率。输入参数的结果值必须大于 5 MB 且小于 95 MB。

缺省值为 5 MB。

在 LMM START THRESHOLD 与 LMM STOP THRESHOLD 之间必须至少差 5 MB

stop_threshold_size 在服务器停止自动释放内存和终止应用之前,您想要数据库服务器拥有的空闲内存量。 该值可表示为 SHMTOTAL 配置参数值的百分率或特定数量。如果该值小于 50,则认为是百分率。输入参数的结果值必须大于 10 MB 且小于 100 MB。该值还必须至少比 LMM START THRESHOLD 多 5 MB。

缺省值为 10 MB。

minimum_amount_of_time 定义会话为空闲的时间量,以秒为单位 该值必须在 1 与 86400 之间。

缺省值为 300 秒。

用法

随同 admin()task() 函数,您使用 scheduler lmm disable 参数来在主数据库服务器或标准数据库服务器中停止当前和后续的低内存管理进程。 当触发低内存管理时,数据库服务器按下列顺序执行这些任务:
  1. 数据库服务器终止会话,从会话有最大的空闲时间量开始一次启动一个,如有必要继续到会话有最小空闲时间量,时间量超过 LMM IDLE TIME 设置中指定的数量。当达到 LMM STOP THRESHOLD 时,服务器停止终止会话。
  2. 数据库服务器终止会话,从使用最多内存的会话开始,如有必要继续到使用最小内存量的会话,直到达到 LMM STOP THRESHOLD。
  3. 通过设置 VP_MEMORY_CACHE 配置参数为 0,数据库服务器执行内存重新配置,并运行 onmode -F 命令来释放不用的共享内存段。

当低内存管理操作完成时,通过将 VP_MEMORY_CACHE 配置参数设置回其原始值,低内存管理器返回到监视模式并恢复数据库服务器的内存配置。

数据库服务器在 ph_threshold 表中存储自动低内存管理设置。

您可用 onstat -g lmm 命令查看低内存管理设置和近期的活动。

注意: 如果您启用自动的低内存管理并配置数据库服务器来使用 SHMTOTAL 配置参数指定值的百分率作为启动和停止阈值,则当更改 SHMTOTAL 配置参数值时请使用警告。更改 SHMTOTAL 配置参数值可导致自动低内存管理的配置变得无效,强制 GBase 8s 使用缺省设置。

设置低内存管理阈值设置的示例

下列示例指定当数据库服务器有 10 MB 或更少的空闲内存时,服务器会启动自动低内存管理停止应用并释放内存。该示例还指定如果会话尚未运行 300 秒则认为会话空闲,该示例指定当服务器有 20 MB 或更多空闲内存时会停止自动低内存管理。

EXECUTE FUNCTION task("scheduler lmm enable",
	"LMM START THRESHOLD", "10MB",
	"LMM STOP THRESHOLD", "20MB",
	"LMM IDLE TIME", "300");

SHMTOTAL 配置参数影响低内存管理阈值设置的示例

假定您设置 SHMTOTAL 配置参数为 1000000(1000 MB 或 1 GB),LMM START THRESHOLD 为 2,且 LMM STOP THRESHOLD 为 3。因为任何小于 50 的值都是 SHMTOTAL 值的百分率,所以实际的 LMM START THRESHOLD 为 20000(20 MB)且实际的 LMM STOP THRESHOLD 为 30000(30 MB)。

当剩余空闲内存为 20 MB 或更少时,数据库服务器开始管理低内存,且当空闲内存量为 30 MB 或更多时,停止管理内存。

假定您决定更改 SHMTOTAL 配置参数的值,因为您知道现在不需要这么多内存,您想要让操作系统使用内存。请您设置 SHMTOTAL 的值为 250000(250 MB)。这更改实际的 LMM START THRESHOLD 为 5000(5 MB),实际的 LMM STOP THRESHOLD 为 7500(7.5 MB)。LMM STOP THRESHOLD 现在无效,因为 LMM START THRESHOLD 与 LMM STOP THRESHOLD 值之间必须至少差 5 MB。LMM STOP THRESHOLD 值还必须至少为 10 MB。

对于您的系统,你可能已经决定差 10 MB 是正确的数量。但是差 5 MB,数据库服务器可能会在低内存管理进程上花费太多的时间,这可能导致性能问题。