Linux系统可以通过cat /proc/meminfo命令查看内存使用情况:
MemTotal: 3934164 kB
MemFree: 307128 kB
Buffers: 148556 kB
Cached: 1051540 kB
SwapCached: 213796 kB
Active: 2309512 kB
Inactive: 990744 kB
Active(anon): 1710288 kB
Inactive(anon): 458576 kB
Active(file): 599224 kB
Inactive(file): 532168 kB
Unevictable: 16 kB
Mlocked: 16 kB
SwapTotal: 3905532 kB
SwapFree: 2783096 kB
Dirty: 2248 kB
Writeback: 0 kB
AnonPages: 2004748 kB
Mapped: 77460 kB
Shmem: 68704 kB
Slab: 139636 kB
SReclaimable: 104656 kB
SUnreclaim: 34980 kB
KernelStack: 3680 kB
PageTables: 39604 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 5872612 kB
Committed_AS: 4098244 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 384644 kB
VmallocChunk: 34359330292 kB
HardwareCorrupted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 12288 kB
DirectMap2M: 4067328 kB
下面是对各个选项的分析:
转自:http://bbs.chinaunix.net/thread-1929969-1-1.html
Provides information about distribution and utilization of memory. This
varies by architecture and compile options. The following is from a
16GB PIII, which has highmem enabled. You may not have all of these fields.
MemTotal: 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)
MemFree: LowFree与HighFree的总和
Buffers: 用来给块设备做的缓冲大小(只记录文件系统的metadata以及 tracking in-flight pages,就是说 buffers是用来存储,目录里面有什么内容,权限等等。)
Cached: 用来给文件做缓冲大小(直接用来记忆我们打开的文件). 它不包括SwapCached
SwapCached: 已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。
Active: 最近经常被使用的内存,除非非常必要否则不会被移作他用.
Inactive: 最近不经常被使用的内存,非常用可能被用于其他途径.
HighTotal:
HighFree: 高位内存是指所有在860MB以上的内存空间,该区域主要用于用户空间的程序或者是缓存页面。内核必须使用不同的手法使用该段内存,因此它比低位内存要慢一些。
LowTotal:
LowFree: 低位可以达到高位内存一样的作用,而且它还能够被内核用来记录一些自己的数据结构。
Among many other things, it is where everything from the Slab is
allocated. Bad things happen when you're out of lowmem.
SwapTotal: 交换空间的总和
SwapFree: 从RAM中被替换出暂时存在磁盘上的空间大小
Dirty: 等待被写回到磁盘的内存大小。
Writeback: 正在被写回到磁盘的内存大小。
Mapped: 影射文件的大小。
Slab: 内核数据结构缓存
VmallocTotal: vmalloc内存大小
VmallocUsed: 已经被使用的虚拟内存大小。
VmallocChunk: largest contigious block of vmalloc area which is free
CommitLimit:
Committed_AS:
Linux内存计算方法:
1、MemTotal值作为总内存
2、空闲内存计算方式:如果Cached值大于MemTotal值则空闲内存为MemFree值,否则空闲内存为MemFree值+Buffers值+Cached值
3、内存使用率为:空闲内存/总内存*100%。