swap分区使用率
时间: 2025-08-25 11:56:22 AIGC 浏览: 19
### 查看和计算 Swap 分区的使用率
#### 使用 `free` 命令查看 Swap 的基本信息
可以通过 `free` 命令快速获取系统的内存和 Swap 的总体使用情况。运行以下命令可以显示以人类可读格式呈现的结果:
```bash
free -h
```
该命令会返回如下字段:
- **total**: 表示总可用的 Swap 大小。
- **used**: 当前已使用的 Swap 容量。
- **free**: 可用的 Swap 空间。
通过这些数据可以直接观察到 Swap 的基本使用状态[^1]。
---
#### 使用 `/proc/swaps` 文件分析 Swap 的详细信息
更详细的 Swap 信息存储在 `/proc/swaps` 文件中,其中包含了每个 Swap 设备或文件的具体统计信息。以下是其主要字段解释:
- **Filename**: 对应的 Swap 文件路径或者设备名称。
- **Type**: 类型(通常是 file 或 partition)。
- **Size**: 单位为 KiB 的 Swap 总容量。
- **Used**: 已经被分配给进程的 Swap 数量。
- **Priority**: 此 Swap 的优先级设置。
要查看此文件的内容,执行以下命令:
```bash
cat /proc/swaps
```
利用这个方法可以获得每一块 Swap 配置的实际利用率[^2]。
---
#### 计算 Swap 使用率的方法
Swap 使用率通常定义为 `(已使用 Swap / 总 Swap) * 100%`。基于前面提到的数据源,可以用简单的 Shell 脚本来完成这一计算过程。下面是一个例子:
```bash
#!/bin/bash
# 获取 total 和 used 数据 (单位 KB)
SWAP_TOTAL=$(grep 'SwapTotal' /proc/meminfo | awk '{print $2}')
SWAP_USED=$(grep 'SwapFree' /proc/meminfo | awk '{print $2}')
if [ "$SWAP_TOTAL" -ne 0 ]; then
SWAP_FREE=$((SWAP_TOTAL - SWAP_USED))
USAGE_RATE=$(echo "scale=2; ($SWAP_FREE*100)/$SWAP_TOTAL" | bc)
else
USAGE_RATE="N/A"
fi
echo "当前 Swap 使用率为: ${USAGE_RATE}%"
```
这段脚本从 `/proc/meminfo` 中提取必要的数值并进行百分比运算,最终输出 Swap 的具体使用比例。
---
#### 修改 swappiness 参数影响 Swap 使用行为
除了监控外,还可以调节系统参数来改变 Swap 的活跃程度。Swappiness 是一个控制内核倾向于何时启用磁盘交换的关键指标,默认情况下 Ubuntu 设置为 60, CentOS 则较低只有 10。较高的值意味着更加积极地把不常用的页面转移到 Swap 上去;而降低它则会让操作系统尽量保留更多活动页留在 RAM 中。
调整方式如下所示:
临时生效(无需重启机器立即起效)
```bash
sysctl vm.swappiness=<value>
```
永久保存至配置文件
编辑 `/etc/sysctl.conf`, 添加或更新一行内容:
```text
vm.swappiness=<desired_value>
```
之后重新加载 sysctl 规则使其应用更改:
```bash
sysctl --system
```
---
#### 找出占用最多 Swap 的 Top 进程
为了进一步深入理解哪些程序正在消耗大量 Swap,可以根据单个进程层面的信息汇总得出结论。这里提供一段查找 top N swap 用户的小工具代码片段作为参考实现之一:
```bash
for pid in $(ls /proc|grep "^[0-9]"); do \
awk '/^Swap/ {sum += $2} END {printf "%d %d\n", sum, '$pid'}' /proc/$pid/smaps 2>/dev/null ; done | sort -nrk1 | head -n 10 | while read swapped pids; do echo "$(ps h -o comm -p $pids): $swapped"; done
```
上述指令遍历所有可能存在的 PID 并累加它们各自的 smap 报告中的 swap 字节数目,最后筛选排名前十名展示出来。
---
### 结论
综上所述,在 Linux 下有多种途径能够有效评估以及管理 swap 分区的状态表现形式各异但原理相通。无论是借助内置实用程序还是自定义解析逻辑都可以满足不同层次需求下的诊断目的。
阅读全文
相关推荐




















