Linux下查询内存使用情况的常用命令
1、free命令
free 命令会显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存等。
$ free total used free shared buff/cache available Mem: 32946324 2489392 11422656 1622872 19034276 28352888 Swap: 0 0 0
释义:
Mem:内存使用情况。
Swap:交换空间(虚拟内存)使用情况。
total:系统总共可用物理内存、交换空间大小。
used:已经被使用的物理内存、交换空间大小。
free:剩余可用物理内存、交换空间大小。
shared:被共享使用的物理内存大小。
buff/cache:被 buffer 和 cache 使用的物理内存大小。
available:还可以被应用程序使用的物理内存大小。
常见用法:
free -h //以更友好的方式显示,会以K、M、G为单位来显示
free -h -s 3 //以一定时间间隔重复的输出,这个命令是每3秒输出一次
free 命令中的信息都来自于 /proc/meminfo 文件。
2、vmstat命令
vmstat 是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控,是对系统的整体情况进行的统计。
$ vmstat
procs -----------memory----------- --swap-- --io-- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 14376368 161976 1130836 0 0 0 3 2 2 0 0 100 0 0
与内存使用情况相关的是memory列和swap列,我们只看这两列。
memory列
swpd:使用的虚拟内存大小。
free:空闲物理内存大小。
buff:buffer cache内存大小。
cache:page cache的内存大小。
swap列
si:每秒从交换区读入到内存的大小,由磁盘调入内存(单位:kb/s)
so:每秒从内存写出到交换区的大小,由内存调入磁盘(单位:kb/s)
常见用法:
vmstat 1 //每隔1s打印一次 vmstat 1 5 //每隔1秒打印一次,打印五次 vmstat -s //显示内存相关统计信息及多种系统活动数量
3、top命令
使用top命令,可以查看正在运行的进程和系统负载信息,包括cpu负载、内存使用、各个进程所占系统资源等,top命令以一定频率动态更新这些统计信息。
top - 10:45:21 up 211 days, 17:14, 2 users, load average: 0.08, 0.09, 0.03 Tasks: 228 total, 1 running, 227 sleeping, 0 stopped, 0 zombie Cpu(s): 0.4%us, 0.1%sy, 0.1%ni, 99.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 32880232k total, 22032060k used, 10848172k free, 569680k buffers Swap: 0k total, 0k used, 0k free, 17771208k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9757 root 20 0 15160 1224 836 R 2.0 0.0 0:00.01 top 1 root 20 0 19364 1644 1312 S 0.0 0.0 2:06.03 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.30 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:02.75 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 2:04.41 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0 6 root RT 0 0 0 0 S 0.0 0.0 0:39.92 watchdog/0 7 root RT 0 0 0 0 S 0.0 0.0 0:01.44 migration/1 8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/1 9 root 20 0 0 0 0 S 0.0 0.0 1:23.26 ksoftirqd/1 10 root RT 0 0 0 0 S 0.0 0.0 0:31.05 watchdog/1 11 root RT 0 0 0 0 S 0.0 0.0 0:02.06 migration/2 12 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/2 13 root 20 0 0 0 0 S 0.0 0.0 0:45.78 ksoftirqd/2 14 root RT 0 0 0 0 S 0.0 0.0 0:29.91 watchdog/2 15 root RT 0 0 0 0 S 0.0 0.0 0:10.61 migration/3 16 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/3 17 root 20 0 0 0 0 S 0.0 0.0 1:57.03 ksoftirqd/3 18 root RT 0 0 0 0 S 0.0 0.0 0:32.77 watchdog/3 19 root RT 0 0 0 0 S 0.0 0.0 0:01.82 migration/4 20 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/4 21 root 20 0 0 0 0 S 0.0 0.0 1:58.64 ksoftirqd/4 22 root RT 0 0 0 0 S 0.0 0.0 0:32.96 watchdog/4 23 root RT 0 0 0 0 S 0.0 0.0 0:03.28 migration/5 24 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/5 25 root 20 0 0 0 0 S 0.0 0.0 0:50.67 ksoftirqd/5 26 root RT 0 0 0 0 S 0.0 0.0 0:30.28 watchdog/5 27 root RT 0 0 0 0 S 0.0 0.0 0:06.60 migration/6 28 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/6
反映系统内存使用状况的是下面这两行:
Mem: 32880232k total, 22032060k used, 10848172k free, 569680k buffers Swap: 0k total, 0k used, 0k free, 17771208k cached
Mem行是物理内存使用情况,分别是:物理内存总量,已使用的物理内存总量,空闲物理内存总量,用作内核缓存区的内存量。
Swap行是交换区使用情况,分别是:交换区总量,已使用的交换区总量,空闲交换区总量,缓冲的交换区总量。
Top命令的下侧区域显示的是各个进程使用的系统资源统计信息,内存相关列如下:
- VIRT列:进程使用的虚拟内存总量,单位kb。
- RES列:进程使用的、未被换出的物理内存大小,单位kb。
- SHR列:共享内存大小,单位kb。
- %MEM 列:进程使用的物理内存百分比。
4、cat /proc/meminfo
/proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free”、”vmstat”等命令就是通过它获取数据的。/proc/meminfo所包含的信息比”free”等命令要丰富得多,但也很复杂,不再一一解释了。感兴趣的话可以看看这篇文章:http://linuxperf.com/?p=142,对 /proc/meminfo 有较详细的解释。
$ cat /proc/meminfo MemTotal: 16430636 kB MemFree: 14376492 kB MemAvailable: 15298732 kB Buffers: 161976 kB Cached: 1022440 kB SwapCached: 0 kB Active: 1369780 kB Inactive: 438696 kB Active(anon): 624376 kB Inactive(anon): 49444 kB Active(file): 745404 kB Inactive(file): 389252 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 60 kB Writeback: 0 kB AnonPages: 624068 kB Mapped: 88140 kB Shmem: 49752 kB Slab: 108076 kB SReclaimable: 82864 kB SUnreclaim: 25212 kB KernelStack: 4464 kB PageTables: 10480 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 8215316 kB Committed_AS: 1811204 kB VmallocTotal: 34359738367 kB VmallocUsed: 34780 kB VmallocChunk: 34359695100 kB HardwareCorrupted: 0 kB AnonHugePages: 182272 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 169832 kB DirectMap2M: 8218624 kB DirectMap1G: 10485760 kB
5、 ps aux命令
ps aux 命令可以查看系统中各个进程的运行情况,包括了进程占用的内存,%MEM 列就是各个进程的内存占用百分比。
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1231 0.9 2.2 1368496 375824 ? SNl Jun21 346:39 ./bcm-agent bls 6891 0.1 0.9 2892024 159516 ? Sl Jun21 55:29 /opt/bls/lib/jre/bin/java -Duser.language=en_us -Xmx500m -XX:+UseParallelGC -XX:+UseParallelOldGC - root 389 0.0 0.2 96376 46212 ? Ss Jun21 0:14 /usr/lib/systemd/systemd-journald root 1245 0.0 0.2 1200080 40200 ? Sl Jun21 19:48 /opt/hosteye/bin/hosteye --is_child_mode=true --is_console_mode=false --start_mode=0 root 1199 0.0 0.1 288132 28188 ? Ssl Jun21 2:06 /usr/sbin/rsyslogd -n root 898 0.0 0.1 573840 17152 ? Ssl Jun21 5:08 /usr/bin/python -Es /usr/sbin/tuned -l -P
参考:
https://www.cnblogs.com/ultranms/p/9254160.html
https://www.cnblogs.com/beginner-boy/p/8067130.html
https://www.cnblogs.com/new-journey/p/10524676.html
https://www.cnblogs.com/zhuiluoyu/p/6154898.html
https://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html
https://www.cnblogs.com/jiffies/articles/2106456.html
https://blog.csdn.net/zhuoya_/article/details/81049967