内容一:Linux 显示内存的命令
# free -m
内容二:Linux 内存机制
1) total 内存的总大小
2) used 正在被使用的内存大小
3) free 表示完全没有被使用的物理内存大小
4) shared 正在被多个进程共享的内存大小
5) buffers 被内核用作统缓冲区 (buffers) 的大小。这些数据暂时存储在内存中,用于提升系统性能,当再次使用时可以在内存中被快速调用。buffers (buffer page) 代表块设备 (硬盘等设备) 所占用的缓存页,对应从硬盘中直接获取的数据,处于内存和硬盘之间,由内核使用 (当 free 状态的内存不够时,它的部分空间会自动释放出来,我们也可以手动释放出它的部分空间来)
6) cached 被内核用作文件系统缓存 (cache) 的大小。这些数据暂时存储在内存中,用于提升系统性能,当再此使用时可以在内存中被快速调用。cached (cache page) 代表普通文件数据 (硬盘里的数据) 所占用的缓存页,对应 vfs 页缓冲层的数据,处于内存和 CPU (处理器) 之间,由应用程序使用 (当 free 状态的内存不够时,它的部分空间会自动释放出来,我们也可以手动释放出它的部分空间来)
7) available = free + buffers (部分空间) + cached (部分空间),也就是估算出来的真实的内存可使用量
(
补充:释放处于 buffers 和 cached 状态内存的方法
1) 释放 page cache:
# echo 1 > /proc/sys/vm/drop_caches
2) 释放 dentries 和 inodes:
# echo 2 > /proc/sys/vm/drop_caches
3) 同时释放 pagecache、dentries 和 inodes:
# echo 3 > /proc/sys/vm/drop_caches
)
内容三: Linux Swap 内存的使用机制
3.1 Linux 内存的种类
1) Linux 物理内存:系统的真实内存,速度快 (也就是 free 命令中显示的第 1 行)
2) Linux Swap 内存:使用硬盘作为临时的内存的空间,速度慢 (也就是 free 命令中显示的第 2 行)
3.2 Swap 内存被使用的条件
1) Linux 内核会周期性把内存中不常调用的匿名页和共享内存交换至 Swap 内存里。即使现在 Linux 系统的物理内存有剩余空间
2) 当系统的内存不足时,系统会把匿名页和共享内存交换至 Swap 内存里
内容四:查看那些内存可以交换至 Swap 内存以及哪些内存可以被释放
# cat /proc/meminfo
MemTotal: 65185544 kB
MemFree: 42285372 kB
MemAvailable: 57893528 kB
Buffers: 1656 kB
Cached: 16157600 kB
SwapCached: 0 kB
Active: 4505604 kB
Inactive: 17856228 kB
Active(anon): 1859740 kB
Inactive(anon): 4353236 kB
Active(file): 2645864 kB
Inactive(file): 13502992 kB
Unevictable: 16 kB
Mlocked: 16 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Zswap: 0 kB
Zswapped: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 6190160 kB
Mapped: 130544 kB
Shmem: 10400 kB
KReclaimable: 100636 kB
Slab: 234788 kB
SReclaimable: 100636 kB
SUnreclaim: 134152 kB
KernelStack: 8096 kB
PageTables: 26504 kB
SecPageTables: 696 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 32592772 kB
Committed_AS: 13920568 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 58476 kB
VmallocChunk: 0 kB
Percpu: 14464 kB
HardwareCorrupted: 0 kB
AnonHugePages: 5797888 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
Unaccepted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 284800 kB
DirectMap2M: 14784512 kB
DirectMap1G: 51380224 kB
(
补充:
1) Active(anon) 经常被使用的内存
2) Inactive(anon) 没有被经常使用的内存,也是 Linux 系统可以从物理内存交换至交换分区里的内存
3) Active(file) 经常被使用的页缓存内存
4) Inactive(file) 没有被经常使用的页缓存内存,也是 buffers/cached 中可以被系统回收的内存
)
