簡介
本文檔介紹使用Cisco Policy Suit (CPS)對交換記憶體使用率過高問題進行故障排除的過程。
必要條件
需求
思科建議您瞭解以下主題:
注意:Cisco建議您必須具有對CPS CLI的超級使用者訪問許可權。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
Linux中的交換空間在實體記憶體(隨機訪問記憶體(RAM))已滿時使用。如果系統需要更多的記憶體資源且RAM已滿,則記憶體中的非活動頁將移至交換空間。雖然交換空間有助於使用少量RAM的電腦,但不能將其視為更多RAM的替代品。交換空間位於硬碟上,其存取時間比實體記憶體慢。交換空間可以是專用交換分割槽(推薦)、交換檔案,也可以是交換分割槽和交換檔案的組合。
在過去的幾年中,建議的交換空間量隨著系統中RAM的量線性增加。然而,現代系統通常包含數百GB的RAM。因此,建議的交換空間被視為系統記憶體工作負荷的函式,而非系統記憶體。
記憶體交換是一種記憶體回收方法,其中將當前未使用的記憶體內容交換到磁碟,以使記憶體可用於其他應用程式或進程。記憶體的確切狀態或「頁面」會複製到磁碟,讓資料連續且易於稍後還原。
與虛擬記憶體一樣,交換空間也是輔助記憶體。當沒有可用於進一步執行進程的實體記憶體時,作業系統(OS)會使用該記憶體。如果OS需要記憶體但記憶體已滿,則會將非活動頁從RAM移動到交換記憶體。
若要檢查電腦中是否有可用的交換空間,您可以使用free指令。
[root@dc1-qns01 ~]# free -m
total used free shared buff/cache available
Mem: 15876 4918 7750 792 3207 9987
Swap: 4095 0 4095
[root@dc1-qns01 ~]#
問題
當已布建的模組大量使用磁碟時,交換使用率較高是正常的。高交換使用率一定是系統遇到記憶體壓力的徵兆。
每當虛擬機器(VM)上的可用交換記憶體低於配置的閾值時,就會生成此警報。
此外,在可復原性事件發生時,在pcrfclient01 VM上觀察到較高的交換記憶體使用率。由於pcrfclient VM中的交換記憶體不足問題,運行diagnostic.sh後診斷失敗。
Checking swap space for all VMs...
Checking swap memory usage on pcrfclient01...[FAIL]
Swap usage is 1835 MB. This will likely lead to a slowdown in your system!
Please ensure your memory is provisioned properly.
If systems memory usage is no longer high, you can reset swap with: swap2ram.sh
條件:由於pcrfclient VM中的交換記憶體不足問題,在運行diagnostic.sh後診斷失敗。
解決CPS交換記憶體使用率高問題的程式
方法1.
在恢復能力事件發生時,可在pcrfclient01 VM上觀察高交換記憶體使用率解決方案。
1. 登入到pcrfclient VM,並使用du -sh *命令檢查磁碟記憶體。
2. 檢查目錄中的記憶體使用情況/var/lib/carbon/whisper/cisco/quantum。如果發現記憶體使用率增加,則問題是由統計檔案引起的。
3. 要恢復記憶體,請刪除統計資訊(.wsp)檔案或增加VM磁碟記憶體。
4. 若要復原記憶體,請手動從檔案夾刪除統計資料, /var/lib/carbon/whisper/cisco/quantum或使用下列步驟刪除統計資料:
- 運行
df –h命令並記下磁碟空間。
- 運行以下命令:
#du -h --max-depth=0 /var/lib/carbon/whisper/cisco/quantum/qps
#monit stop grafana-server
#monit stop carbon-cache
#vi /etc/carbon/storage-schemas.conf
- 更新位於檔案結尾的保留期間(從90天到30天)。這將導致更嚴格的保留期。
較舊-保留:10秒:1天,60秒:90天
更新至-保留:10s:1d,60s:30d
- 更新保留期間後,請執行以下命令:
#monit start carbon-cache
#monit start grafana-server
注意:或者,您可以使用systmctl start/stop/restart命令而非monit start/stop/restart命令。
- 建立一個名為resize.sh的檔案並增加以下檔案。
#monit stop carbon-cache
#cd /var/lib/carbon/whisper/cisco/quantum/qps
#find ./ -type f -name '*.wsp' -exec whisper-resize --nobackup {} $1 \;
#chown -R carbon:carbon *
#monit start carbon-cache
#monit restart grafana-server
- 使用
chmod 777 resize.sh命令增加所需的許可權。
- 執行
./resize.sh "updated_retention_value"
示例命令: #./resize.sh "10s:1d 60s:30d"
- 完成指令碼後,運行這些命令以確認透過比較先前結果和當前結果減少了資料量。
#run df –h: disk space should reduce or less than previous result
#du -h --max-depth=0 /var/lib/carbon/whisper/cisco/quantum/qps
- 驗證Grafana是否顯示最近30天的統計資訊,但不超過30天。(更新的保留期為30天)。
方法2.
解決高交換記憶體利用率的一般建議。
若要清除系統上的交換記憶體,您只需關閉交換記憶體。這會將所有資料從交換記憶體移回RAM。這也意味著您需要確保您擁有支援此操作的RAM。一種簡單的方法是運行free -m,檢視交換和RAM中使用的內容。關閉電源後,您可以等待任意時間(約30秒)以完成操作,然後重新打開交換電源。這樣會清除交換記憶體快取並重新啟用它。以下是您需要的所有指令。
1. 檢查交換空間使用情況: # free -m
2. 停用交換: # swapoff -a
等待約30秒。運行free -m以檢視隨時間推移而使用/可用的交換空間量。
3. 啟用交換:# swapon -a