在AI模型部署和训练的场景中,高效的内存管理至关重要。大型语言模型(LLMs)或复杂的计算机视觉模型往往需要巨大的内存资源。即使拥有大内存的服务器,正确配置和监控Swap空间也能有效防止系统在内存瞬间高峰时崩溃(OOM Kill),尤其是在使用CPU Offload或分层存储技术时。
本文将介绍在Ubuntu系统上查看和分析当前配置的Swap空间大小和使用情况的几种实用方法。
Contents
1. 使用 free -h 进行快速概览
查看Swap空间最常用也是最快捷的方法是使用 free 命令。添加 -h 选项可以以人类可读的格式(如GB, MB)显示结果。
1 free -h
示例输出:
1
2
3 total used free shared buff/cache available
Mem: 62Gi 5.2Gi 50Gi 1.1Gi 6.8Gi 56Gi
Swap: 2.0Gi 0B 2.0Gi
解读:
* Swap: total: 显示系统配置的总Swap空间大小(上例中为2.0Gi)。
* Swap: used: 显示当前正在使用的Swap空间大小。
2. 使用 swapon –show 查看详细配置(推荐)
对于需要了解Swap空间来源(是分区还是文件)以及其优先级(Priority)的场景,swapon –show 是最佳工具。它会列出所有当前激活的Swap设备。
1 swapon --show
示例输出:
1
2 NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
解读:
* NAME: Swap设备的路径。在本例中,Swap空间是一个名为 /swapfile 的文件,而不是一个磁盘分区。
* TYPE: Swap的类型(file 或 partition)。
* SIZE: 配置的总大小。
* PRIO: 优先级。优先级越高,系统越倾向于使用它。
3. 使用 /proc/swaps 查看内核原始信息
/proc 文件系统提供了内核运行时的信息。直接查看 /proc/swaps 文件可以获取与 swapon –show 类似但更原始的数据。
1 cat /proc/swaps
示例输出:
1
2 Filename Type Size Used Priority
/swapfile file 2097148 0 -2
请注意,这里的 Size 和 Used 是以KB为单位显示的。
4. AI基础设施进阶:理解和调整 Swappiness
对于高性能的AI任务,Swap空间虽然是系统稳定性的保障,但频繁的磁盘I/O(即Swap操作)会严重拖慢模型训练和推理速度。Linux内核通过 vm.swappiness 参数来控制系统使用Swap的倾向。
- ****swappiness = 0** (或低值):** 尽量避免使用Swap,除非内存严重不足(推荐用于AI/DB服务器)。
- ****swappiness = 60** (默认):** 平衡,系统会更积极地使用Swap。
- ****swappiness = 100: 积极使用Swap。
如何查看当前的 Swappiness 值
1 cat /proc/sys/vm/swappiness
如何临时或永久修改 Swappiness 值
如果您的AI应用对延迟要求高,且内存基本能满足需求,建议将其调低(例如10):
- 临时修改(重启后失效):
1 sudo sysctl vm.swappiness=10
- 永久修改:
编辑 /etc/sysctl.conf 文件,并添加或修改以下行:
1
2
3
4
5
6
7
8 # 在文件末尾添加
sudo nano /etc/sysctl.conf
# 添加以下内容
vm.swappiness = 10
# 使配置生效
sudo sysctl -p
通过合理配置Swap空间并调整 swappiness 参数,您可以确保AI基础设施在面临内存压力时既能保持稳定,又能最大限度地减少I/O瓶颈。
汤不热吧