目錄

簡介

背景資訊

一般資訊

MEMPOOL_HEAPCACHE_X

瞭解Heapcache記憶體警報

MEMPOOL_GLOBAL_SHARED

警報上下文

MEMPOOL_DMA和MEMPOOL_DMA_ALT1

DMA記憶體池概述

DMA記憶體的使用

DMA記憶體池的行為

何時需要擔心？

SNMP監控

簡介

本檔案介紹對調適型安全裝置(ASA)/Firepower威脅防禦(FTD)中的各種記憶體元件的理解。

背景資訊

如果您收到任何與內存有關的通知，本文將確定何時採取預防措施以及何時忽略它們。簡單網路管理協定(SNMP)輪詢通常用於啟動與內存有關的警報。此SNMP將使用show memory detail命令的結果來收集資料並觸發警報。

一般資訊

本文討論下述儲存器元件

- MEMPOOL_HEAPCACHE_X

- MEMPOOL_GLOBAL_SHARED

- MEMPOOL_DMA和MEMPOOL_DMA_ALT1

MEMPOOL_HEAPCACHE_X

瞭解Heapcache記憶體警報

1. Heapcache分配行為

- Heapcache是記憶體分配的首選池。

- 一旦Heapcache池用盡，將從全域性共用池中進行進一步分配。

- 全域性共用池本身根據需要從系統記憶體提取記憶體。

2. Heapcache記憶體警報

- 接收Heapcache記憶體警報是正常的，並不表示有問題。

- Heapcache記憶體的使用率預期較高，因為它是分配給使用的第一個池。

3. 要監控的關鍵點

- 側重於系統記憶體使用。

- 如果系統記憶體足夠，則無需擔心MEMPOOL_HEAPCACHE_0或MEMPOOL_GLOBAL_SHARED池的警報。

- 使用SNMP工具監控系統記憶體，以發現任何嚴重閾值或效能下降。

4. 警報和預期行為

- 記憶體保留行為是正常。

- 系統會根據需要動態地保留和分配記憶體。

- 您可以安全地忽略與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)記憶體系統包含兩個關鍵記憶體池：

1. MEMPOOL_DMA

2. MEMPOOL_DMA_ALT1

這兩個池共同工作以確保平滑的記憶體可用性：

- MEMPOOL_DMA是主池。

- 當主池耗盡時，MEMPOOL_DMA_ALT1用作備份。

DMA記憶體的使用

DMA記憶體池主要用於需要高速資料訪問和記憶體密集操作的任務。它通常用於VPN相關功能和其他流程，包括：

1. 虛擬專用網路(VPN)服務：

- IPSec(IKEv1/IKEv2)

- 傳輸層安全(TLS)代理

- WebVPN（AnyConnect/無客戶端VPN）

2. 安全和日誌記錄服務：

- 入侵防禦系統(IPS)

- Syslogging("logging host ...")

- 安全殼層(SSH)連線

3. 管理及其他服務：

- 自適應安全裝置管理器(ASDM)（ASA HTTPS伺服器）

- 動態主機設定通訊協定(DHCP)伺服器

DMA記憶體池的行為

1. 引導時間分配：

啟動時，ASA根據啟用的功能分配DMA記憶體。

2. 動態記憶體使用：

- 根據需要處理MEMPOOL_DMA請求的記憶體。

- 當進程完成時，記憶體會返回到空閒池（稍有延遲）。

3. 回退到MEMPOOL_DMA_ALT1:

- 如果MEMPOOL_DMA得到充分利用，系統將自動使用MEMPOOL_DMA_ALT1。

- 這可確保連續運行，不會出現與記憶體相關的中斷。

何時需要擔心？

- 如果MEMPOOL_DMA利用率高（接近100%），則只要MEMPOOL_DMA_ALT1有足夠的記憶體，就不存在即時問題。

- 如果MEMPOOL_DMA_ALT1也開始填滿，則表明存在記憶體耗盡問題，需要進一步調查。

- 需採取的行動：

- 監視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值

1. MIB .1.3.6.1.4.1.9.9.221.1.1.1.1.18: — 此MIB表示cempMemPoolHCUsed對象，該對象是用於所使用記憶體池的高容量計數器。它提供池中使用的記憶體量（以位元組為單位）。

2. MIB .1.3.6.1.4.1.9.9.221.1.1.1.1.20: — 此MIB表示cempMemPoolHCFree對象，該對象是記憶體池空閒的高容量計數器。它提供池中的可用記憶體量（以位元組為單位）。

特定MIB的用途：

1. MEMPOOL_MSGLYR_HB: — 表示消息層心跳的記憶體池。這用於監視系統中為心跳消息分配的記憶體。

2. MEMPOOL_MSGLYR: — 表示消息層的記憶體池。這用於監控系統中為一般消息層操作分配的記憶體。

3. MEMPOOL_HEAPCACHE_1: — 表示堆快取1的記憶體池。這用於監視系統中為第一個堆快取分配的記憶體。

4. MEMPOOL_HEAPCACHE_0: — 表示堆快取0的記憶體池。這用於監視系統中為主堆快取分配的記憶體。

5. MEMPOOL_DMA_ALT1: — 表示DMA備用1的記憶體池。這用於監視系統中為第一個備用DMA操作分配的記憶體。

6. MEMPOOL_DMA: — 表示DMA的記憶體池。這用於監視系統中為DMA操作分配的記憶體。

7. MEMPOOL_GLOBAL_SHARED: — 表示全域性共用記憶體的記憶體池。這用於監視系統中為全域性共用操作分配的記憶體。