簡介
本檔案介紹對調適型安全裝置(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記憶體的使用率預期較高,因為它是分配給使用的第一個池。
- 要監控的關鍵點
- 側重於系統記憶體使用。
- 如果系統記憶體足夠,則無需擔心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記憶體。
網際網路金鑰交換(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: — 表示全域性共用記憶體的記憶體池。這用於監視系統中為全域性共用操作分配的記憶體。