HCRM博客

CentOS内存信息查看指南

在 CentOS 系统运维过程中,准确掌握内存使用状况是至关重要的技能,无论是排查性能瓶颈,还是规划服务器资源,对内存的清晰认知都能帮助我们做出明智决策,本文将详细介绍几种在 CentOS 系统中查看内存详细信息的实用方法,助您从不同维度全面了解系统内存。

CentOS内存信息查看指南-图1

基础检查:free 命令的深入解读

free 命令是快速获取内存概览的首选工具,但仅仅看那几个数字是不够的,理解其背后的含义才是关键。

直接输入 free,默认显示单位是 KB,为了便于阅读,我们通常加上 -h 参数,以人类易读的格式(G、M)输出:

free -h

输出结果通常如下:

              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.1G        200M         10M        2.4G        2.3g
Swap:          2.0G        0B          2.0G

这里需要重点关注几个指标:

  • total: 物理内存的总大小。
  • used: 已使用的内存,这个值需要注意,它包含了被应用程序占用的内存和内核用于缓存(buffer/cache)的部分。
  • free: 完全未被使用的内存。
  • buff/cache: 这是内核用于磁盘缓存和缓冲区的大小,这部分内存在系统需要时可以被快速回收给应用程序使用,因此它不属于“浪费”的内存。
  • available: 这是最值得关注的指标,它表示系统在不进行 Swap 的情况下,可以提供给新应用程序使用的内存估算值,它包含了 free 内存和大部分可回收的 buff/cache 内存,在评估服务器是否内存充足时,应主要参考此值。
  • Swap: 交换分区的使用情况。used 值持续很高,说明物理内存不足,系统频繁使用硬盘作为虚拟内存,这将严重拖慢性能。

为了更细致地观察内存变化,可以使用 -s 参数指定间隔秒数进行持续监控:

free -s 5 -h

这条命令会每 5 秒刷新一次内存信息。

探秘 /proc/meminfo:获取内存信息的源头

freetop 等命令的数据都来源于 /proc/meminfo 这个虚拟文件,直接查看这个文件,可以获得最为详尽的内存信息。

cat /proc/meminfo

非常丰富,包含了数十个内存相关指标,对于运维人员来说,以下几个条目尤为重要:

  • MemTotal: 总物理内存,与 free 中的 total 对应。
  • MemFree: 完全空闲的内存。
  • MemAvailable: 估算的可用内存,是核心参考指标。
  • Buffers: 块设备缓存。
  • Cached: 文件页缓存。
  • SwapCached: 被缓存到交换区的内存大小。
  • Active / Inactive: 活跃与非活跃内存,有助于判断内存压力。
  • SwapTotal / SwapFree: 交换分区总量与剩余量。

通过 grep 可以快速过滤出关心的信息,

CentOS内存信息查看指南-图2

grep -E 'MemTotal|MemAvailable|SwapTotal' /proc/meminfo

这种方法能够提供最原始、最全面的数据,适合用于脚本自动化采集或深度分析。

动态监控:top 与 vmstat 的实时视角

对于运行中的系统,动态监控内存使用趋势同样重要。

top 命令提供了一个实时的、全屏的动态进程视图,在 top 界面中,首部几行就包含了内存和交换分区的汇总信息,其数据与 free -h 类似,按 q 即可退出。

另一个强大的工具是 vmstat(Virtual Memory Statistics),它不仅能报告内存,还能显示进程、块 IO、中断和 CPU 活动等信息。

vmstat -w 2 5
  • -w: 宽输出模式,更易读。
  • 2: 每 2 秒采集一次数据。
  • 5: 共采集 5 次后退出。

vmstat 的输出中,我们关注 memory 列的 swpd(已使用的交换分区大小)、free(空闲内存)、buffcache,以及 swap 列的 si(每秒从磁盘换入的内存大小)和 so(每秒换出到磁盘的内存大小)。siso 长期非零,则是内存不足的强烈信号。

专业工具:smem 的进阶分析

在某些场景下,我们可能需要了解进程的实际物理内存占用(PSS、USS),这比 top 中显示的 RES 常驻内存)更具参考价值。smem 工具正是为此而生。

您可能需要安装它:

yum install epel-release -y
yum install smem -y

使用 smem 查看进程内存:

smem -k -s pids
  • -k: 显示单位为 MB/GB。
  • -s pids: 按 PID 排序。

更常用的方式是查看每个用户的内存占用:

CentOS内存信息查看指南-图3

smem -u

或者以饼图形式输出汇总报告(需要图形界面或配合其他工具):

smem --pie name -s rss

smem 的优势在于它能计算出 PSS(Proportional Set Size),即按比例计算共享内存后的物理内存占用,更能反映一个进程独自占用了多少物理内存。

排查内存泄漏与理解 Slab 占用

有时你会发现,free 命令显示 used 很高,但通过 top 又找不出是哪个进程占用的,这很可能是内核的 Slab 缓存占用了大量内存,Slab 是内核用于管理数据结构缓存的一种机制。

使用 slabtop 可以实时查看 Slab 缓存的使用情况:

slabtop

如果要查看当前系统的 Slab 总大小,可以:

cat /proc/meminfo | grep Slab

如果发现 dentryinode_cache 等占用异常高,可能是文件系统缓存未能及时释放,在某些极端情况下可能暗示着某种形式的内核内存泄漏或特定应用(如大量小文件操作)导致。

掌握以上这套组合工具和方法,您就不再是仅仅“看一眼”内存,而是能够真正地“诊断”内存,从概览到细节,从静态到动态,这些命令共同构成了一名系统管理员分析 CentOS 内存状态的完整工具箱,在实际工作中,根据不同的场景灵活选用这些工具,将使服务器运维工作变得更加得心应手。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/53407.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~