简介
本文档介绍使用Cisco Policy Suit (CPS)解决高交换内存使用率问题的过程。
先决条件
要求
Cisco 建议您了解以下主题:
注意:思科建议您必须具有对CPS CLI的超级用户访问权限。
使用的组件
本文档中的信息基于以下软件和硬件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
当物理内存(随机访问内存[RAM])已满时,使用Linux中的交换空间。如果系统需要更多内存资源且RAM已满,内存中的非活动页面将移至交换空间。虽然交换空间有助于计算机使用少量RAM,但不应将其视为更多RAM的替代品。交换空间位于硬盘驱动器上,其存取时间比物理内存慢。交换空间可以是专用的交换分区(推荐)、交换文件,也可以是交换分区和交换文件的组合。
在过去几年中,建议的交换空间量随系统中RAM的量线性增加。但是,现代系统通常包含数百千兆字节的RAM。因此,建议的交换空间被视为系统内存工作负荷的函数,而不是系统内存的函数。
内存交换是一种内存回收方法,其中将当前未使用的内存内容交换到磁盘,以使内存可用于其他应用或进程。将内存的确切状态或“页面”复制到磁盘上,使数据连续且便于以后恢复。
与虚拟内存一样,交换空间也是辅助内存。当没有可用于进一步执行进程的物理内存时,操作系统(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
条件:运行diagnostic.sh后,由于pcrfclient虚拟机中的交换内存不足问题,诊断失败。
解决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天)。这会导致更严格的保留期。
较旧-保留:10s:1d、60s:90d
更新至-保留:10s:1d、60s:30d
- 更新保留期后,运行以下命令:
#monit start carbon-cache
#monit start grafana-server
注意:或者,您可以使用systmctl start/stop/restart命令而非monit start/stop/restart命令。
#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