在 Linux 下 free 命令可以看出系统当前内存状况,附上 -k , -m , -g 可以分别输出对应单位的内存状况:

  1. Usage:
  2. free [options]
  3. Options:
  4. -b, --bytes show output in bytes
  5. -k, --kilo show output in kilobytes
  6. -m, --mega show output in megabytes
  7. -g, --giga show output in gigabytes
  8. --tera show output in terabytes
  9. --peta show output in petabytes

以某台 Linux Ecs 为例,运行 free -m 后的输出如下:

  1. $ free -m
  2. total used free shared buff/cache available
  3. Mem: 3789 229 621 0 2937 3261
  4. Swap: 0 0 0

这些值都是什么意思呢?

首先看行:
Mem :表示物理内存统计
Swap :表示硬盘上交换分区的使用情况(这里我们不去关心)
注:系统的总物理内存:3789M,但系统当前真正可用的内存并不是第一行 free 标记的 621M,它仅代表未被分配的内存。

接下来看列:
total :总计物理内存的大小。
used :已使用多大。
free :可用有多少。
Shared :多个进程共享的内存总额。
Buffers/cached :磁盘缓存的大小。

这大致就是 Linux 下内存各项参数的含义,还有更复杂的参数,未来遇到新的场景时再做补充。

——————————- 补充 ——————————-

  1. cat /proc/meminfo
  2. MemTotal: 3880404 kB //总内存
  3. MemFree: 637548 kB //空闲内存
  4. MemAvailable: 3340664 kB
  5. Buffers: 178760 kB //给文件的缓冲大小
  6. Cached: 2535436 kB //高速缓冲存储器使用的大小
  7. SwapCached: 0 kB //被高速缓冲存储用的交换空间大小
  8. Active: 1370440 kB //活跃使用中的高速缓冲存储器页面文件大小
  9. Inactive: 1506936 kB //不经常使用的高速缓冲存储器页面文件大小
  10. Active(anon): 163452 kB
  11. Inactive(anon): 216 kB
  12. Active(file): 1206988 kB
  13. Inactive(file): 1506720 kB
  14. Unevictable: 0 kB
  15. Mlocked: 0 kB
  16. SwapTotal: 0 kB //交换空间总大小
  17. SwapFree: 0 kB //空闲交换空间
  18. Dirty: 76 kB //等待被写回到磁盘的大小
  19. Writeback: 0 kB //正在被写回的大小
  20. AnonPages: 163320 kB //未映射的页的大小
  21. Mapped: 65100 kB //设备和文件映射的大小
  22. Shmem: 492 kB
  23. Slab: 294180 kB //内核数据结构缓存的大小,可减少申请和释放内存带来的消耗
  24. SReclaimable: 278620 kB //可收回slab的大小
  25. SUnreclaim: 15560 kB //不可收回的slab的大小15560 + 278620 = 294180
  26. KernelStack: 2624 kB
  27. PageTables: 5720 kB //管理内存分页的索引表的大小
  28. NFS_Unstable: 0 kB //不稳定页表的大小
  29. Bounce: 0 kB
  30. WritebackTmp: 0 kB
  31. CommitLimit: 1940200 kB
  32. Committed_AS: 586464 kB
  33. VmallocTotal: 34359738367 kB //虚拟内存大小
  34. VmallocUsed: 14160 kB //已经被使用的虚拟内存大小
  35. VmallocChunk: 34359715580 kB
  36. HardwareCorrupted: 0 kB
  37. AnonHugePages: 10240 kB
  38. CmaTotal: 0 kB
  39. CmaFree: 0 kB
  40. HugePages_Total: 0 //大页面的分配
  41. HugePages_Free: 0
  42. HugePages_Rsvd: 0
  43. HugePages_Surp: 0
  44. Hugepagesize: 2048 kB
  45. DirectMap4k: 98176 kB
  46. DirectMap2M: 4096000 kB
  47. DirectMap1G: 2097152 kB

参考文献