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