使用
display memory-usage命令查看华为设备内存状态,该命令显示内存总量、当前使用率及利用率阈值,帮助实时监控设备内存负载情况。
对于使用华为服务器、存储设备、网络设备(如部分高端路由器/交换机运行Linux或类似系统)或华为云ECS实例(通常运行Linux)熟练掌握命令行查看内存状态是进行系统监控、性能分析和故障排查的基础技能,与图形界面相比,命令行提供了更直接、更详细且更高效的内存信息获取方式,以下介绍几种最常用且强大的命令行工具和方法:
核心工具:free 命令
free 命令是查看系统内存(包括物理内存和交换空间)使用情况最直接的工具,它提供简洁明了的概览。
-
基本用法:
free
输出示例:
total used free shared buff/cache available Mem: 8167848 1022544 456324 10284 6688980 6822344 Swap: 2097148 0 2097148 -
解读输出 (以 Mem 行为例):
- total: 系统安装的总物理内存大小(单位:KiB)。
- used: 当前已被使用的内存量(包括应用程序使用的和内核缓冲区/缓存占用的部分)。
- free: 完全未被使用的内存量。
- shared: 主要被 tmpfs(内存文件系统)使用的内存量(通常较小)。
- buff/cache: 关键指标! 这是被内核缓冲区(buffers)和页面缓存(page cache)占用的内存总和,这部分内存用于加速磁盘I/O,当应用程序需要更多内存时,内核可以快速回收这部分内存供其使用。
free值很小而buff/cache很大通常是正常且高效的。 - available: 最重要指标! 估算的、无需进行交换(swap)即可提供给新启动的应用程序或现有应用程序增长使用的内存量,它考虑了
free内存和部分可回收的buff/cache内存,这个值更能反映系统当前实际可用的内存资源。如果available内存持续很低(例如小于总内存的10%或20%),就需要警惕内存不足的风险。 - Swap: 显示交换空间的总量、使用量和空闲量。
used不为零不一定表示问题,但持续增长或高使用率可能表明物理内存不足。
-
常用选项:
-h/--human: 以人类可读的格式(K, M, G)显示大小(强烈推荐)。free -h
输出示例:
total used free shared buff/cache available Mem: 7.7Gi 1.1Gi 512Mi 10Mi 6.2Gi 6.5Gi Swap: 2.0Gi 0B 2.0Gi-s: 每隔 N 秒刷新显示一次(用于持续监控)。free -h -s 5 # 每5秒刷新一次
-t/--total: 在输出底部添加一行显示内存和交换空间的总和统计。free -h -t
深入分析:/proc/meminfo 文件
Linux内核通过虚拟文件系统 /proc 暴露了大量系统信息,内存的详细信息就存储在 /proc/meminfo 文件中。free 命令的数据也来源于此,直接查看这个文件可以获得最详尽的内存统计。
-
查看方法:
cat /proc/meminfo
或使用分页查看(推荐):
less /proc/meminfo
-
关键字段解读(部分):
MemTotal: 总物理内存(同free的total)。MemFree: 完全空闲内存(同free的free)。MemAvailable: 估算可用内存(同free的available,最重要)。Buffers: 块设备(如磁盘)的缓冲区大小。Cached: 页面缓存大小(buff/cache的主要组成部分)。SwapCached: 曾经被换出(swap out)但又被换入(swap in)且仍在交换区留有备份的页面大小(可被快速丢弃)。Active: 最近活跃使用的内存(通常难以回收)。Inactive: 最近较少使用的内存(相对容易回收)。SwapTotal: 总交换空间。SwapFree: 空闲交换空间。Dirty: 等待写回磁盘的内存页大小。Writeback: 正在写回磁盘的内存页大小。Slab/SReclaimable/SUnreclaim: 内核数据结构(Slab缓存)占用的内存,部分可回收(SReclaimable),部分不可回收(SUnreclaim)。Shmem: 共享内存和tmpfs使用的总量(通常接近free的shared)。HugePages_*: 与巨页(HugePages)相关的统计(如果启用)。
其他实用命令
-
top/htop(增强版):top是一个动态的、交互式的进程查看器,启动后:- 按
M(大写) 可以按内存使用率 (%MEM或RES) 排序进程。 - 顶部区域显示系统概览,包括内存和交换空间的使用情况(
KiB Mem,KiB Swap行),其数据也来源于/proc/meminfo。 - 按
q退出。
- 按
htop是top的现代化替代品,提供彩色显示、更直观的布局、鼠标支持和更好的交互体验,通常需要额外安装 (yum install htop或apt install htop),内存信息显示在顶部,进程列表默认按CPU排序,可按F6选择按内存(MEM%)排序。
-
vmstat:
报告虚拟内存统计信息、进程、CPU活动等,对查看内存、交换、I/O和CPU的整体情况很有用。vmstat -s # 显示一次性的详细统计摘要(类似/proc/meminfo的汇总) vmstat 1 # 每隔1秒刷新一次标准输出(显示进程、内存、交换、IO、CPU)
在标准输出中关注
memory部分的swpd(已用交换空间),free(空闲内存),buff(缓冲区),cache(缓存) 和swap部分的si(每秒换入),so(每秒换出)。si/so持续不为零可能表示内存压力。 -
ps:
用于列出当前进程的快照,结合排序和格式化选项可以找出消耗内存最多的进程。ps aux --sort=-%mem | head -n 10 # 按内存使用率降序排列,显示前10个进程 ps aux --sort=-rss | head -n 10 # 按实际驻留集大小(RSS)降序排列,显示前10个进程
%MEM: 进程使用的物理内存占系统总物理内存的百分比。RSS: 常驻集大小,即进程实际占用的、未被换出的物理内存大小(单位KB),这个值更能反映进程当前消耗的物理内存量。
重要注意事项
- 权限: 执行这些命令通常不需要root权限(
sudo),普通用户即可查看系统级内存信息,但某些特定信息或操作(如修改内核参数)可能需要root。 - 单位: 注意命令输出的单位。
free默认是 KiB (1024 bytes),使用-h选项可自动转换。/proc/meminfo单位是 KiB。ps的RSS单位通常是 KB (1024 bytes)。 freevsavailable: 务必理解free(完全空闲)和available(估算可用)的区别。available是判断内存是否充足的关键指标。buff/cache的作用: 不要看到buff/cache很大就惊慌,这是Linux内核优化性能的设计,这部分内存是可以被应用程序快速回收利用的,只有当available内存持续很低且swap使用量开始增长时,才表明物理内存可能真的不足。- 华为设备差异: 本文介绍的命令适用于运行标准Linux内核的华为设备(如基于CentOS/RHEL/EulerOS的服务器、部分网络设备OS、华为云ECS),对于运行嵌入式或专用实时操作系统(如VRP)的华为网络设备(如多数交换机、路由器),查看内存的命令通常是设备特定的(如
display memory-usage),请参考对应设备的官方文档或使用 查看帮助。
如何选择?
- 快速概览:
free -h(重点关注available和swap used) - 详细统计:
cat /proc/meminfo或vmstat -s - 找出内存消耗大户:
top(按M),htop(按F6选MEM%), 或ps aux --sort=-%mem | head - 动态监控趋势:
vmstat 1,top,htop或free -h -s
掌握 free, /proc/meminfo, top/htop, vmstat 和 ps 这些命令行工具,是有效监控和管理华为设备(运行Linux系统)内存资源的基础,理解关键指标(尤其是 MemAvailable)的含义至关重要,它能帮助你准确判断系统内存的真实负载情况,及时发现潜在瓶颈,并采取相应的优化或扩容措施,对于非标准Linux的华为设备,务必查阅其官方文档获取正确的内存查看命令。
引用说明:
- 本文所涉及的命令 (
free,top,htop,vmstat,ps,/proc/meminfo) 是标准 Linux 内核和核心工具集 (coreutils, procps-ng) 的一部分,其功能和行为由 Linux 内核开发社区和 GNU 项目定义和维护,具体文档可通过各命令的man页面 (如man free,man proc) 查阅。 - 关于华为特定设备(如运行 VRP 系统的网络设备)的命令,请参考华为官方发布的对应产品文档:华为企业支持官网 或 华为企业技术支持。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7349.html