top显示的内存各项参数解析
VIRT, RES, SHR, SWAP, CODE, DATA
top实际上是从/proc/<pid>/statm文件中读取这些信息,/proc/<pid>/smaps文件是进程虚拟内存映射的详细数据,我们知道内核的struct page结构有引用计数,如果>1,表示是shared page,否则是private page
VIRT对应于内核的mm->total_vm,包括了进程代码段,数据段所有申请过的虚拟内存,后面会详细阐述
SHR对应于内核的mm->file_rss,代表进程可能是与其他进程共享的内存(不一定是真的共享了,比如打开动态库占用的虚存,未必这个动态库就被其他人也用到)。网上查阅了资料,记入mm->file_rss的内存包括,
程序和动态库代码段的内存,从pmap的结果看,和程序文件大小没啥关系,估计是因为指令不是一次全部加载到代码段里的缘故
通过mmap做的文件映射
通过mmap做的匿名映射,但指明了MAP_SHARED属性
通过shmget申请的共享内存
RES对应于mm->file_rss + mm->anon_rss,我们知道虚拟内存一共有两类,文件页和匿名页,mm->anon_rss就是进程匿名页的大小,匿名页可以是进程独占的,也可以是共享的,比如fork之后COW的那些页就是父子进程共享的,但这些都不会记入SHR,因此可以看出,SHR的大小和共不共享没有半毛钱关系
SWAP表示进程被交换到swap分区的虚拟内存,VIRT = SWAP + RES
CODE表示进程代码段占用的虚拟内存
DATA表示进程数据段占用的虚拟内存
内核通过一个task_statm函数来返回进程内存的使用状况,
int task_statm(struct mm_struct *mm, int *shared, int *text,
int *data, int *resident)
{
*shared = get_mm_counter(mm, file_rss);
*text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK))
>> PAGE_SHIFT;
*data = mm->total_vm - mm->shared_vm;
*resident = *shared + get_mm_counter(mm, anon_rss);
return mm->total_vm;
}
shared是mm->file_rss的内存,这个值是mmap创建但还没有swap出去的虚拟内存页个数
text是进程代码段的虚拟内存页个数,代码段的页是不会被swap出去的
resident包括了shared和mm->anon_rss的虚拟内存页个数,这里的mm->anon_rss是那些未被swap的匿名页。注意进程有可能通过malloc分配的一段内存,但是还没有使用,因此这段虚拟内存还不会map到匿名页上,这段内存的值会被计算到mm->total_vm,但是不会在mm->anon_rss中
data就是进程数据段的虚拟内存页个数,包括swap出去的
关于匿名页,之前的理解有误,确切的说,虚拟内存实际分为匿名页和文件页,文件页包括mmap打开的文件,文件的page cache等,这些页不会被换页算法交换到swap上,因为如果不是脏页,那么可以直接释放,如果是脏页,则直接回写文件;匿名页包括栈堆上面分配的页,以及mmap匿名打开的文件产生的页,这些页是会交换到swap分区的
swap会判断页是否是dirty,只有dirty页才会被回写到磁盘,clean页直接就释放掉了
top显示的内存各项参数解析的更多相关文章
- linux top命令查看内存及多核CPU的使用讲述【转】
转载一下top使用后详细的参数,之前做的笔记找不见了,转载一下,作为以后的使用参考: 原文地址:http://blog.csdn.net/linghao00/article/details/80592 ...
- Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析
之后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析,通过对LoadModel函数的解析,能够很好理解. ...
- Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建与所有参数解析
废话就不多说了,直接开始啦~ 安装环境变量: 使用linx下的解压软件,解压找到里面的install 或者 ls 运行这个进行安装 yum install gcc yum install gcc-c+ ...
- 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析(转)
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20537737 作者:毛星云(浅墨) ...
- Linux TOP命令按内存占用排序和按CPU占用排序
先输入top 然后 按P – 以 CPU 占用率大小的顺序排列进程列表 按M – 以内存占用率大小的顺序排列进程列表 top命令是Linux下常用的性能分析工具,比如cpu.内存的使用,能够实时显示系 ...
- argparse - 命令行选项与参数解析(转)
argparse - 命令行选项与参数解析(译)Mar 30, 2013 原文:argparse – Command line option and argument parsing 译者:young ...
- Ubuntu 使用top/free查看内存占用大的原因
Ubuntu 使用top/free查看内存占用大的原因 linux/ubuntu下free/top查看内存占用大的原因 使用free/top查看内存占用的时候,吓了一大跳,机器4GB的内存,显 ...
- /proc/sys/ 下内核参数解析
http://blog.itpub.net/15480802/viewspace-753819/ http://blog.itpub.net/15480802/viewspace-753757/ ht ...
- document.execCommand()函数可用参数解析
隐藏在暗处的方法-execCommand() 关键字: javascript document document.execCommand()方法可用来执行很多我们无法实现的操作. execComman ...
随机推荐
- Codeforces 359D Pair of Numbers | 二分+ST表+gcd
题面: 给一个序列,求最长的合法区间,合法被定义为这个序列的gcd=区间最小值 输出最长合法区间个数,r-l长度 接下来输出每个合法区间的左端点 题解: 由于区间gcd满足单调性,所以我们可以二分区间 ...
- vue(三)
一.vue的特点 1.响应式的数据绑定(一旦修改了数据,立马更新视图) 数据驱动思想 (数据到视图的映射.操作数据改变视图.简化对DOM的操作) 追踪依赖变化 ( Object.defineProp ...
- html模板引擎jade的使用
jade语法: #{xxx} //嵌入数据 p= xxx //嵌入数据 p #{xx} //嵌入数据 标签 html // 翻译为<html></html> div#test ...
- 在AppCode中的razor调用HtmlHelper方法和UrlHelper方法
原文发布时间为:2011-05-17 -- 来源于本人的百度文章 [由搬家工具导入] 可以写一个帮助类,如下 using System.Web.WebPages;using System.Web.Mv ...
- Mybatis注解的使用
一.mybatis 简单注解 关键注解词 : @Insert : 插入sql , 和xml insert sql语法完全一样 @Select : 查询sql, 和xml select sql语法完全一 ...
- openGL深度缓冲区问题
http://zhidao.baidu.com/question/368299839.html&__bd_tkn__=6aa9196c746cd3357f1eec74aeb127b395029 ...
- android hook 框架 xposed 如何实现注入
Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2 如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...
- Hbase delete遇到的常见异常: Exception in thread "main" java.lang.UnsupportedOperationException
hbase 执行批量删除时出现错误: Exception in thread "main" java.lang.UnsupportedOperationException at j ...
- Fiddler抓包4-工具介绍(request和response)【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/p/6719717.html 前言 本篇简单的介绍下fiddler界面的几块区域,以及各自区域到 ...
- 加密中的salt是啥意思
今天在stackoverflow上查看python的md5的问题,提到,除了简单的加密外,还可以加入一点salt 啥意思?百度一下看到:(https://zhidao.baidu.com/questi ...