SAP 内存管理
内存管理系统的功能
当用户上下文的大小增加时,可以根据需要扩展允许直接访问的用户上下文区域。为 对话框工作流程中,用户上下文的数据,包括内部表都位于此扩展内存中。您可以 因此,访问用户上下文中的所有数据。只有提取和导出到内存类型的数据仍保留在分页中。
下图显示了可在 SAP 级别和操作系统上分配给工作流程的内存类型 水平。以下是控制内存类型可用性的最重要配置文件参数。
下图显示了调度程序执行的滚动操作。
扩展内存池是系统启动时保留的扩展内存区域。
- 滚入:用户特定的在工作进程中由扩展内存池显示,以便可以在下一个对话框中访问它 步。
- 推出:对话步骤结束后,工作进程在扩展内存池中再次隐藏用户特定的数据。
非用户特定的数据始终包含在工作流程中。此数据可能是:
- 程序代码
- 叠
- 静态数据
- SAP 缓冲区
- ABAP计划
- 表缓冲区
- …
仅当当前正在运行用户会话时,用户上下文数据才包含在工作流程中。此数据可能是:
- ABAP 变量
- 内部表
- …
内存类型
内存管理系统将内存分配给工作进程。不同的内存类型是:
-
扩展内存
-
专用内存(堆内存)
分配顺序取决于工作流程的类型和配置。
当用户上下文的大小增加时,可以根据需要扩展允许直接访问的用户上下文区域。
控制内存管理
abap/heaplimit:工作流程重新启动
一个工作流程的内存管理资源
ztta/roll_extension:扩展内存的限制
ztta/roll_extension_dia:对话工作流程的 EM 限制
ztta/roll_extension_nondia:非对话工作流程的 EM 限制
abap/heap_area_dia:对话框工作流程的堆内存限制
abap/heap_area_nondia:非对话工作流程的堆内存限制
abap/heap_area_total:堆内存的总限制
内存管理限制
abap/heap_area_total:堆内存限制
em/initial_size_MB:扩展内存池大小
rdisp/PG_SHM:分页缓冲区的大小
rdisp/PG_MAXFS:SAP 分页文件的最大大小
em/blocksize_KB:扩展内存的段大小
em/proc_max_size_MB:可分配给所有工作流程的最大 PROC 内存量。
内存管理统计信息
em/stat_log_size_MB:统计信息 – 用户上下文大小
em/stat_log_timeout:统计信息 – 用户上下文大小
用于控制操作系统的 SAP 内存释放的参数
ES/disclaim_threshold_MB
ES/disclaim_coasting_time_alloc
ES/disclaim_coasting_time_free
ES/blockdisclaimsize_KB
ES/freelist_compactor
监视
以下工具适用于监视:
-
调整摘要(事务ST02)
此处显示了特定 SAP 应用程序服务器的当前状态和内存资源使用情况。程序是 使用事务 ST02 检查卷筒/分页区域和扩展内存中所述。
-
用于监视主机系统中可用交换空间的事务。ST06
详细信息:使用事务 ST06 监视内存资源。
-
CCMS警报监视器(交易):RZ20
详细信息:CCMS 文档中的教程
-
用户概述(交易):SM04
调用事务或选择
”。SM04在事务 SM04 中,您可以显示内存值的各种列。您可以使用图标 显示可能的列。
工作流程概述(事务)SM50)
选择该按钮以显示为特定工作进程保留的内存资源。Detail
详细信息:显示和控制工作流程。
通过监视 SAP 系统(事务)或系统外部(操作系统级别的 dpmon 程序)中的工作流,可以确定与 PRIV 模式相关的工作流状态。如果工作 进程经常切换到PRIV模式,您必须增加扩展内存和/或调整扩展的限制 记忆。SM50
-
使用事务中,您可以评估所有工作流程的此信息。或者,您可以使用事务调用此系统范围的列表 SM66.SM50
程序
在 SAP 系统中,错误消息显示在开发人员跟踪文件中,dev_disp dev_w<n>、系统日志和转储中。可能会出现以下消息:; ; ;, .TSV_TNEW_;._NO_ROLL_MEMORYNO_MEMNO_MEMORYRESIZE_EM_ALLOC_ERRORStorage class PERM
如果后台作业处于活动状态且包含大量数据,则主要会出现此问题。
可能的原因
-
没有更多的交换空间可用(交换空间要求)。
-
已超过限制交换空间使用率的某个 SAP 配置文件参数的最大值。在这种情况下, 以下参数是相关的:ABAP/heap_area_dia、ABAP/heap_area_nondia和ABAP/heap_area_total。
使用事务 SM50 确定 PRIV 模式下的工作流程。
可能的原因/纠正措施
-
没有更多的 SAP 扩展内存可用。
在此示例中,工作进程 5 和 6 无法分配更多的扩展内存,因为池已用完,尽管其 ZTTA/roll_extension 的限制仍将允许扩展内存。它们过早切换到 PRIV 模式(请参阅为用户上下文分配内存))
行动:
增加 SAP 扩展内存池(em/initial_size_MB:扩展内存池的大小),以防止将工作流程切换到 PRIV 模式。
-
对于大多数用户上下文(使用参数 ztta/roll_extension 设置),扩展内存的限制太低。许多上下文分配堆内存并切换到 PRIV 模式。
行动:
使用 ztta/roll_extension 增加扩展内存的限制。
-
扩展内存的限制太高。一些用户上下文可以完全填满整个扩展内存,从而 在达到限制之前,其他进程将切换到 PRIV 模式。
减少扩展内存的限制(在 ztta/roll_extension 中定义),或增加扩展内存(参见 em/initial_size_MB)。