Clean
内存的大小Dirty
内存的大小Clean
内存的大小Dirty
内存的大小Swap
的大小MMU
页大小mlock
的内存大小Rss
这个指标实际上是包含了共享库的大小的,不同的进程会共享这个映射的,如果想通过累加这个值来计算所有进程用到的内存的话就不准确了,而Pss
把共享库的大小均摊给了所有用到映射了这个库的进程,所以累加起来就不会重复计算共享库大小了 。P.S. 最新的内核文档提到了要加我们可以累加一下这个值看看某进程用到的内存总和:smaps_rollup
这个统计,支持Pss_Anon
、Pss_File
和Pss_Shmem
三个分类统计,这个在进程级别看,用到内存就很清晰了 。
文章插图
注意单位是KB,所以这里进程用到的内存是 1.17 GB 左右 。
这是个使用共享内存作为存储的服务,所以这是符合预期的 。如果想要看排除共享内存的部分,那要看
Anonymous
部分的总和:文章插图
所以实际匿名内存使用是 63 MB 左右 。
top 命令
top
命令中关于内存使用的统计:文章插图
内存相关的统计有
VIRT
、RES
、SHR
、SWAP
、CODE
、DATA
、USED
- VIRT —
Virtual Memory Size
,虚拟内存大小,包括所有代码、数据和共享库,以及已交换的页面和已映射但未使用的内存
- RES —
Resident Memory Size
,驻留内存大小,共享的内存比如动态库也会计算在内
- SHR —
Shared Memory Size
,共享的内存大小,并非所有共享的内存都是常驻的
- SWAP — Swapped Size,非驻留内存大小
- CODE — Code Size,程序可执行代码的大小
- DATA — Data + Stack Size,可执行代码以外的物理内存量,也称为数据驻留集大小
- USED — Memory in Use,RES + SWAP 的大小
其他的内存查看命令常用的还有这些:
vmstat
、sar
、slabtop
、kmstat
、ps
、prstat
、pmap
等等 。懒得写了,有问题看man
文档得了 。参考文献[1] Understanding the Linux Kernel, Daniel Plerre Bovet / Marco Cesati, 2005-11
[2] Professional Linux Kernel Architecture, Wolfgang Mauerer, 2008-10-13
[3] Systems Performance: Enterprise and the Cloud, Brendan Gregg, 2013-10-26
[4] https://raw.githubusercontent.com/torvalds/linux/master/Documentation/filesystems/proc.txt
[5] https://en.wikipedia.org/wiki/Resident_set_size
[6] https://en.wikipedia.org/wiki/Proportional_set_size
[7] https://en.wikipedia.org/wiki/Unique_set_size
推荐阅读
- 普洱茶十大学费茶,中国最受媒体关注的十大普洱茶品牌排名四大特点
- 普洱茶十大名牌,中国最受媒体关注的十大普洱茶品牌排名四大特点
- 我对网络IO的理解
- 普洱茶分类,普洱茶的分类及名称
- 网络推广有哪些
- linux压缩打包命令—tar命令
- 淘宝直播怎么看自己的邀请码 淘宝直播邀请码在哪里
- 关于年长程序员的5个误传
- 程序员在5G时代中的机遇!
- 高流量大并发Linux TCP性能调优