目录

简介

先决条件

要求

使用的组件

背景信息

问题

解决CPS交换内存使用率高问题的过程

简介

本文档介绍使用Cisco Policy Suit (CPS)解决高交换内存使用率问题的过程。

先决条件

要求

Cisco 建议您了解以下主题：

- Linux

- CPS

注意：思科建议您必须具有对CPS CLI的超级用户访问权限。

使用的组件

本文档中的信息基于以下软件和硬件版本：

- CPS 20.2

- 统一计算系统(UCS)-B

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

当物理内存（随机访问内存[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命令。

- 创建名为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