1 概述

Linux 查看内存使用情况的几种方法包括使用 free 命令、top 命令、htop 命令、vmstat 命令和/proc/meminfo 文件。这些方法可以帮助用户了解系统内存的使用情况,包括总内存、已用内存、空闲内存、缓存和交换分区等信息。

2 查看方法

2.1 /proc/meminfo

这个动态更新的虚拟文件实际上是许多其他内存相关工具 (如:free / ps / top) 等的组合显示。在 linux 系统中,/proc/meminfo 是一个报告可用和已用内存量的虚拟文件,它包含有关系统内存使用情况以及内核使用的缓冲区和共享内存的实时信息。进程的内存使用信息也可以通过 /proc/[pid]/statm 和 /proc/[pid]/status 来查看。

[root@localhost ~]# cat /proc/meminfo
MemTotal:        2895156 kB
MemFree:          752592 kB
MemAvailable:    1827172 kB
Buffers:            1116 kB
Cached:          1213428 kB
SwapCached:            0 kB
Active:           975116 kB
Inactive:         878320 kB
Active(anon):     639740 kB
Inactive(anon):    26636 kB
Active(file):     335376 kB
Inactive(file):   851684 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:               212 kB
Writeback:             0 kB
AnonPages:        638916 kB
Mapped:           163036 kB
Shmem:             27484 kB
Slab:             107376 kB
SReclaimable:      45276 kB
SUnreclaim:        62100 kB
KernelStack:        9584 kB
PageTables:        35784 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3544724 kB
Committed_AS:    4088468 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      218980 kB
VmallocChunk:   34359277564 kB
Percpu:            55296 kB
HardwareCorrupted:     0 kB
AnonHugePages:    137216 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      126848 kB
DirectMap2M:     3018752 kB
DirectMap1G:           0 kB

2.2 atop

atop是一款用于实时监控Linux系统性能的命令行工具,可以提供对CPU、内存、磁盘、网络等资源的监测和分析。详细可以参考:linux atop 命令详解

--安装atop工具
sudo apt-get install atop
--查询
sudo atop

2.3 free

free 命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。数据表示已用/可用内存和以KB为单位的交换内存大小。

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           2.8G        775M        817M         27M        1.2G        1.8G
Swap:          2.0G          0B        2.0G

指令说明:

指令 说明
total 总安装内存
used 正在运行的进程当前正在使用的内存(used= total – free – buff/cache)
free 未使用的内存(free= total – used – buff/cache)
shared 多个进程共享的内存
buffers 作系统保留的内存,在进程需要时分配为缓冲区
cached 存储在 RAM 中最近使用的文件
buff/cache Buffers + Cache
available 可用于启动新应用程序,无需交换的内存大小

free 命令可以添加多个选项标志用来格式化输出:

选项标志 结果
-b 以 Byte 为单位输出
-k 以 KB 为单位的输出
-m 以 MB 为单位的输出
-g 以 GB 为单位输出
-l 详细的低内存和高内存统计信息
-o 旧格式(无 -/+缓冲区/缓存行)
-t RAM + swap
-s 多少秒更新一次
-c 更新多少次

2.4 GNOME System Monitor

GNOME System Monitor 是一个显示最近一段时间内的 CPU、内存、交换区及网络的使用情况的视图工具。它还提供了一种查看 CPU 及内存使用情况的方法。

gnome-system-monitor

在这里插入图片描述

2.5 htop

htop 命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。

--安装
sudo apt install htop
--查询
htop

2.6 memstat

memstat 是一个有效识别 executable(s), process(es) and shared libraries 使用虚拟内存情况的命令。给定一个进程 ID,memstat 可以列出这个进程相关的可执行文件、数据和共享库。

memstat -p

2.7 nmon

nmon 是一个基于 ncurses 的系统基准测试工具,它可以监控 CPU、内存、I/O、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示总 / 剩余内存、交换空间等信息。

nmon

2.8 ps

ps 命令可以实时的显示各个进程的内存使用情况。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (totalamount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort” 选项对进程进行排序,例如按 RSS 进行排序:

ps aux | sort -rss

2.9 smem

smem是Linux系统上的一款可以生成多种内存耗用报告的命令行工具。与现有工具不一样的是smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标。可以衡量虚拟内存系统的库和应用程序所占用的内存数量。

由于大部分的物理内存通常在多个应用程序之间共享,名为实际使用物理内存(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS这个参数而是衡量了每个应用程序在每个共享内存区中的“公平分配”,给出了一个切合实际的衡量指标。

Options:

  -h, --help            show this help message and exit
  -H, --no-header       disable header line
  -c COLUMNS, --columns=COLUMNS
                        columns to show
  -t, --totals          show totals
  -R REALMEM, --realmem=REALMEM
                        amount of physical RAM
  -K KERNEL, --kernel=KERNEL
                        path to kernel image
  -m, --mappings        show mappings
  -u, --users           show users
  -w, --system          show whole system
  -P PROCESSFILTER, --processfilter=PROCESSFILTER
                        process filter regex
  -M MAPFILTER, --mapfilter=MAPFILTER
                        map filter regex
  -U USERFILTER, --userfilter=USERFILTER
                        user filter regex
  -n, --numeric         numeric output
  -s SORT, --sort=SORT  field to sort on
  -r, --reverse         reverse sort
  -p, --percent         show percentage
  -k, --abbreviate      show unit suffixes
  --pie=PIE             show pie graph
  --bar=BAR             show bar graph
  -S SOURCE, --source=SOURCE

例如:

  • smem -u #参数-u 显示每个用户所耗用的内存总量
  • smem -p #查看耗用内存情况的百分比
  • smem -w #查看系统内存使用情况
  • smem -w -p
  • smem -R 24G -w #参数-R REALMEM,REALMEM这个值是指物理内存数量。此参数可以让smem在整个系统(-w)的输出中发现固件/硬件所耗用的内存数量(对比上下即可发现,注意firmware/hardware)
  • smem -c “name user pss” #参数-c 用来显示需要展示的列
  • smem -s rss #参数-s 根据某一列(例如 rss)来排序
  • smem -s rss -r #参数-r 一般与参数-s结合使用,表示反转排序(从升序改为降序)
  • smem -M mysql #参数-M 过滤相关进程

2.10 top

top 命令提供了实时的运行中的程序的资源使用统计,可以根据内存的使用和大小来进行排序。包括正常运行时间、平均负荷、正在运行的任务数、登录用户数、CPU 数量/CPU 利用率、内存/交换区的系统进程。

top

在这里插入图片描述

2.11 vmstat

vmstat 命令显示实时的和平均的统计,覆盖 CPU、内存、I/O 等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 714320   1116 1308756    0    0   372    16  124  197  3  2 94  0  0

3 总结

  • free 命令是最常用的方法,可以直接显示系统内存的使用情况
  • top 和 htop 命令可以实时监控系统的内存使用情况
  • vmstat 命令可以显示更详细的内存使用情况
  • /proc/meminfo 文件包含了系统内存的详细信息,可以通过 cat 命令查看
Logo

2万人民币佣金等你来拿,中德社区发起者X.Lab,联合德国优秀企业对接开发项目,领取项目得佣金!!!

更多推荐