Swap分区
Swap 分区是 Linux 系统中的一块硬盘空间,它被用来扩展物理内存(RAM)的功能。当系统的 RAM 被充满时,操作系统可以利用 Swap 分区作为一个临时的存储空间用于存放那些暂时不活跃的内存页面。
Swap 空间在 Linux 和其他类 Unix 操作系统中可以被理解为虚拟内存的一种形式。物理内存(RAM)是有限的,当系统的RAM使用接近或达到极限时,为了不让系统崩溃,操作系统可以使用部分硬盘空间作为虚拟内存,以便转移部分低优先级的内存页或不活跃的进程信息。
在 Linux 系统中执行 free -h
命令时,会看到关于系统内存和交换空间(Swap)的使用情况的输出。这里是如何解读这些结果的简要概述:
total used free shared buff/cache available
Mem: 15G 5.3G 4.2G 1.1G 5.5G 4.3G
Swap: 2.0G 0.5G 1.5G
- total: 系统中总共的物理内存或交换空间。
- used: 已被使用的内存或交换空间;已用的内存并不一定意味着这段内存正在被活跃使用,因为这也包括了作为缓存的那部分内存。
- free: 未被使用的内存或交换空间。
- shared: 多个进程共享的内存总量,这片内存通常是属于 tmpfs 文件系统(通常关联在
/run
或/dev/shm
)或者用作共享内存(例如,由某些数据库使用)。 - buff/cache: 由缓冲(buffer)和缓存(cache)占用的内存量。缓冲是用来缓存块设备(如硬盘)的,而缓存用于缓存文件系统的数据。
- available: 近似可供启动新应用程序使用的内存量,而不太可能导致内存不足。这个数字考虑了OS可回收的缓存和buff内存部分,因此它给出了一个比单纯的 free 值更加实际的可用内存量。
此外,对于 Swap:
- Swap: 这是磁盘上专门用于交换空间的部分。如果看到 Swap 的 “used” 值很高,那可能意味着系统已经使用了大量的交换空间,这有可能会导致系统响应变慢。
该系统有大约 15GB 的 RAM(物理内存),其中有约 5.3GB 正在使用,4.2GB 是完全空闲的。还有 5.5GB 被用作缓存和缓冲,但由于这部分内存可以在必要时被回收,因此还有约 4.3GB 可用给应用程序使用,而不太可能导致内存不足的情况。
对于 Swap,总共有 2.0GB 的交换空间,目前有 0.5GB 正在使用,这意味着还有 1.5GB 的 Swap 是空闲的。
输入free指令,在swap中total、user和free都是0代表没有创建 Swap 分区、Swap 被禁用、配置了 Swap 文件而非分区、系统内存足够或者故障或配置错误的情况,具体情况在分析;
(可以通过 swapon -s
命令查看系统中 Swap 的使用情况,或通过 sudo swapon /path/to/swapfile
来启用 Swap 文件,其中 /path/to/swapfile
是创建的 Swap 文件的路径。如果需要创建一个新的 Swap 分区或文件,需要使用 mkswap
命令来格式化分区或文件,并使用 swapon
命令来启用它。)
swap使用量较高,通常伴随空间物理内存严重不足的情况;
使用了最多 Swap 的前几个进程,按照使用 Swap 从高到低排序
for i in $(cd /proc ; ls | grep "^[0-9]" | awk '$0 > 100');
do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null;
done | sort -k2nr |head
出现的结果在利用ps指令来查看对应的是什么进程
ps u -p 进程A 进程B 进程C