简介
本文档介绍对自适应安全设备(ASA)/Firepower威胁防御(FTD)中各种内存组件的理解。
背景信息
如果您收到任何与内存相关的通知,本文将确定何时采取预防措施以及何时忽略这些措施。简单网络管理协议(SNMP)轮询通常用于启动与内存相关的警报。此SNMP将使用show memory detail命令的结果来收集数据并触发警报。
一般信息
本文讨论下述存储器元件
- MEMPOOL_HEAPCACHE_X
- MEMPOOL_GLOBAL_SHARED
- MEMPOOL_DMA和MEMPOOL_DMA_ALT1
MEMPOOL_HEAPCACHE_X
了解Heapcache内存警报
- Heapcache分配行为
- Heapcache是内存分配的首选池。
- 一旦Heapcache池耗尽,将从全局共享池中进行进一步分配。
- 全局共享池本身根据需要从系统内存提取内存。
- Heapcache内存警报
- 接收Heapcache内存警报是正常的,并不表示有问题。
- Heapcache内存预期使用率较高,因为Heapcache内存是分配用于使用的第一个池。
- 监控要点
- 关注系统内存使用。
- 如果系统内存足够,则无需担心MEMPOOL_HEAPCACHE_0或MEMPOOL_GLOBAL_SHARED池的警报。
- 使用SNMP工具监控系统内存,以了解任何临界阈值或性能下降。
- 警报和预期行为
- 内存保留行为是正常。
- 系统会根据需要动态地保留和分配内存。
- 您可以放心地忽略与Heapcache或全局共享池相关的警报,除非系统内存本身变得非常高。
MEMPOOL_GLOBAL_SHARED
- 动态内存处理
MEMPOOL_GLOBAL_SHARED不会在引导时预分配所有内存。相反,它会根据需要从操作系统请求内存。
- 内存释放
当释放大量内存时,MEMPOOL_GLOBAL_SHARED会将内存返回给操作系统。
- 弹性增长/收缩
MEMPOOL_GLOBAL_SHARED的大小会根据工作负载进行动态扩展和收缩。此自适应行为可确保高效的内存利用率。
- 速度方面的最小缓存
在MEMPOOL_GLOBAL_SHARED中仍分配少量内存,以加快将来的内存分配请求并避免延迟。
警报情景
如果此警报出现,则会描述MEMPOOL_GLOBAL_SHARED的预期行为。由于它动态地增长、缩减和管理内存,因此行为是正常的,不会指示任何问题。您可以安全地忽略此警报,除非观察到与内存相关的性能问题。
MEMPOOL_DMA和MEMPOOL_DMA_ALT1
DMA内存池概述
Cisco ASA/FTD中的直接内存访问(DMA)内存系统包含两个关键内存池:
- MEMPOOL_DMA
- MEMPOOL_DMA_ALT1
这两个池协同工作以确保平滑的内存可用性:
DMA内存的使用
DMA内存池主要用于需要高速数据访问和内存密集型操作的任务。它通常用于VPN相关功能和其他流程,包括:
- 虚拟专用网络(VPN)服务:
-
IPSec(IKEv1/IKEv2)
-
传输层安全(TLS)代理
- WebVPN(AnyConnect/无客户端VPN)
- 安全和日志记录服务:
- 入侵防御系统 (IPS)
- Syslogging(“logging host ...”)
- 安全外壳(SSH)连接
-
管理和其他服务:
DMA内存池的行为
- 引导时间分配:
启动时,ASA根据启用的功能分配DMA内存。
- 动态内存使用:
-
根据需要处理从MEMPOOL_DMA请求的内存。
-
当进程完成时,内存会返回到空闲池(稍有延迟)。
- 回退到MEMPOOL_DMA_ALT1:
何时需要担心?
如果观察到DMA内存相关问题较多,请检查:
HTTP服务器:如果配置了HTTP,它将分配4、80、1550、2048和2560字节块,并会使用大约7Mb的DMA。尝试暂时禁用ASDM访问。
URL服务器:如果已配置,这将添加另一个81Kb的DMA内存。
Internet密钥交换(IKE)和WebVPN:启用任何形式的VPN都将从DMA内存池中抽取内存。
如果您使用的是VPN,则它可能也会使用此内存。请检查VPN利用率以确保它不超过机箱容量。
日志记录:用于日志记录的DMA由队列大小和日志记录主机数量控制。
#sh run logg
不使用日志记录队列0
不使用日志记录队列8192
请勿配置多个日志记录服务器
不配置巨帧
SNMP 监控
图中所示的管理信息库(MIB)用于SNMP内存监控。
了解这些MIB中的Counter64值以及如何使用它们:
MIB中的Counter64值
- MIB .1.3.6.1.4.1.9.9.221.1.1.1.1.18: — 此MIB表示cempMemPoolHCUsed对象,这是用于所用内存池的高容量计数器。它提供池中所用的内存量(以字节为单位)。
- MIB .1.3.6.1.4.1.9.9.221.1.1.1.1.20: — 此MIB表示cempMemPoolHCFree对象,它是内存池空闲的高容量计数器。它提供池中的可用内存量(以字节为单位)。
特定MIB的用途:
- MEMPOOL_MSGLYR_HB: — 表示消息层心跳的内存池。这用于监控系统中为心跳消息分配的内存。
- MEMPOOL_MSGLYR: — 表示消息层的内存池。这用于监控系统中为常规消息层操作分配的内存。
- MEMPOOL_HEAPCACHE_1: — 表示堆缓存1的内存池。这用于监视系统中为第一个堆缓存分配的内存。
- MEMPOOL_HEAPCACHE_0: — 表示堆缓存0的内存池。这用于监视为系统中的主堆缓存分配的内存。
- MEMPOOL_DMA_ALT1: — 表示DMA备用1的内存池。用于监控系统中为第一个备用DMA操作分配的内存。
- MEMPOOL_DMA: — 表示DMA的内存池。这用于监控系统中为DMA操作分配的内存。
- MEMPOOL_GLOBAL_SHARED: — 表示全局共享内存的内存池。这用于监控系统中为全局共享操作分配的内存。