服务器测评网
我们一直在努力

如何查看Linux系统当前的交换分区大小和使用情况?

在Linux系统中,交换分区(Swap Partition)是虚拟内存的重要组成部分,它作为物理内存(RAM)的延伸,当系统内存不足时,可将部分暂时不用的数据写入交换分区,从而释放内存供更紧急的任务使用,合理配置和管理交换分区,对于提升系统稳定性、避免内存溢出(OOM)至关重要,本文将详细介绍如何在Linux系统中查看交换分区的相关信息,包括基本概念、常用命令及实际应用场景。

如何查看Linux系统当前的交换分区大小和使用情况?

交换分区的基本概念

交换分区是硬盘上的一块特殊区域,被Linux内核用作虚拟内存,当物理内存耗尽时,系统会将内存中不常用的页面(Page)交换到交换分区中,这个过程称为“换出”(Swap Out);当需要这些数据时,再从交换分区读回内存,称为“换入”(Swap In),交换分区的存在可以有效防止系统因内存不足而崩溃,但交换分区的读写速度远低于物理内存,因此不能完全替代物理内存。

交换分区的容量设置需要根据实际需求调整,一般建议交换分区大小为物理内存的1-2倍,但对于内存较大的服务器(如超过16GB),可适当减少交换分区比例,例如设置为与物理内存相等或更小,需要注意的是,SSD硬盘的读写速度较快,可作为交换分区的选择,但频繁的读写可能会影响SSD的寿命。

使用free命令查看交换分区概况

free命令是Linux中最常用的查看内存使用情况的工具之一,它可以快速显示物理内存、交换分区及缓存的使用状态,通过free命令,可以直观地了解交换分区的总容量、已使用量和剩余量。

基本语法与输出解析

执行free命令后,默认以KB为单位显示内存信息,

              total        used        free      shared  buff/cache   available
Mem:        16280960     3257304     9823672      123456     3199984    12015632
Swap:       8388608           0     8388608

Swap行表示交换分区的信息:

  • total:交换分区的总容量(此处为8GB);
  • used:已使用的交换分区容量(此处为0,表示当前未使用);
  • free:空闲的交换分区容量(此处为8GB,与total相等)。

使用-h参数以人类可读格式显示

默认情况下,free命令以KB为单位显示,不便于直观理解,使用-h(human-readable)参数,可以自动选择合适的单位(如MB、GB):

free -h
              total        used        free      shared  buff/cache   available
Mem:          15.5Gi       3.1Gi       9.4Gi       121Mi       3.1Gi       11.5Gi
Swap:         8.0Gi          0B       8.0Gi

交换分区的容量以GB为单位显示,更加清晰。

如何查看Linux系统当前的交换分区大小和使用情况?

其他常用参数

  • -s:持续监控内存使用情况,例如free -s 3表示每3秒刷新一次数据;
  • -m:以MB为单位显示,适用于需要精确数值的场景。

使用swapon命令查看交换分区详细信息

swapon命令用于管理交换分区,结合--show参数,可以显示当前系统中已启用的交换分区的详细信息,包括文件/设备路径、类型、大小及优先级等。

基本语法与输出解析

执行swapon --show命令,

NAME      TYPE SIZE USED PRIO
/dev/sda2 partition   8G   0B   -2

输出结果的列含义如下:

  • NAME:交换分区的设备文件名或文件路径;
  • TYPE:交换分区的类型,如partition(分区)或file(文件);
  • SIZE:交换分区的大小;
  • USED:已使用的交换分区大小;
  • PRIO:交换分区的优先级,数值越大优先级越高,多个交换分区时可指定优先级。

查看未启用的交换分区

如果系统中配置了交换分区但未启用,可通过swapon --show查看不到信息,此时可使用cat /proc/swaps文件,该文件记录了系统中所有交换分区的状态(包括未启用的):

Filename         Type        Size    Used    Priority
/dev/sda2        partition   8388608 0       -2

使用cat /proc/meminfo查看交换分区相关指标

/proc/meminfo是Linux内核提供的内存信息虚拟文件,包含详细的内存和交换分区统计信息,通过该文件,可以查看交换分区的总容量、已使用量、空闲量等更底层数据。

关键指标解析

执行cat /proc/meminfo | grep -i swap命令,可筛选出与交换分区相关的行:

SwapTotal:       8388608 kB
SwapFree:        8388608 kB
SwapCached:          0 kB
  • SwapTotal:交换分区的总容量(KB);
  • SwapFree:空闲交换分区容量(KB);
  • SwapCached:被缓存到交换分区中的内存大小,这部分数据可被快速调回内存。

查看内存整体使用情况

/proc/meminfo还包含其他重要指标,如MemTotal(总物理内存)、MemAvailable(可用物理内存)等,结合这些指标可以全面评估系统内存压力:

如何查看Linux系统当前的交换分区大小和使用情况?

cat /proc/meminfo | grep -E "MemTotal|MemAvailable|SwapTotal|SwapFree"
MemTotal:        16280960 kB
MemAvailable:    12015632 kB
SwapTotal:       8388608 kB
SwapFree:        8388608 kB

使用tophtop命令实时监控交换分区使用情况

tophtop是动态的系统监控工具,可以实时查看进程级别的内存和交换分区使用情况,通过这些工具,可以直观地观察交换分区的使用趋势及占用内存较多的进程。

top命令的使用

top命令的界面中,KiB Swap行显示交换分区的总容量、已使用量和空闲量,按Shift + F后,选择SWAP字段,可按交换分区使用量对进程排序:

KiB Swap:   8388608 total,        0 used,   8388608 free,   8388608 cached

htop命令的使用

htoptop更直观,界面中会以进度条形式显示物理内存和交换分区的使用情况,在htop中,按F3搜索swap,可快速定位交换分区相关的信息:

[Memory Bar]    [Swap Bar]
|||||||||||||   ||||||||||||

交换分区使用场景分析与优化建议

何时需要关注交换分区使用率?

  • 当系统频繁使用交换分区(如SwapUsed持续较高)时,可能意味着物理内存不足,需考虑升级内存或优化应用程序;
  • 如果交换分区使用率突然飙升,可能是某个进程发生了内存泄漏,需通过tophtop定位并处理相关进程。

优化交换分区的建议

  1. 调整交换分区大小:根据实际需求调整交换分区容量,避免过大或过小;
  2. 使用多个交换分区:通过设置不同优先级的交换分区,可实现负载均衡(如将SSD作为高优先级交换分区);
  3. 禁用交换分区:对于内存充足且要求高性能的服务器(如数据库服务器),可临时禁用交换分区(sudo swapoff -a),但需谨慎操作,避免内存溢出。

查看Linux交换分区是系统管理和性能优化的重要技能,通过freeswapon/proc/meminfotophtop等工具,可以全面了解交换分区的配置和使用情况,合理配置交换分区,结合系统实际需求进行优化,能有效提升系统的稳定性和性能,在日常运维中,建议定期监控交换分区使用率,及时发现并解决内存相关问题,确保系统高效运行。

赞(0)
未经允许不得转载:好主机测评网 » 如何查看Linux系统当前的交换分区大小和使用情况?