VSZ与RSS

使用ps命令查看进程的内存使用情况时,有3列输出,分别是%MEM、VSZ和RSS,其中VSZ全称为Virtual Memory Size,RSS全称为Resident Set Size,而MEM则是RSS占全部内存的百分比。

为什么要用两列VSZ和RSS表示进程的内存使用量呢?从它们两个名称上,就可以窥见一二。VSZ表示虚拟内存大小,RSS表示驻留物理内存的内存大小。前者VSZ并没有真正占用物理内存,只是划分了地址空间,并没有建立虚拟地址与物理内存的映射——这也是Linux常用的优化方法,如COW,都是在真正需要的时候,才分配资源。所以当查看哪个进程占用内存过多时,我们只要查看RSS列,而非VSZ。因为某些服务经常一启动就申请了大量的内存,但实际并没有使用,代表服务如java虚拟机。

下图是一个来自阿里ECS的截图:

其中红线指向的第5列和第6列分别为VSZ和RSS,其值分别为2G+和74M+。

接下来,我们自己编码测试VSZ和RSS。

在这个简单的代码中,函数alloc_mem用于循环512次,每次申请1M的内存,一共申请512M内存。执行的时候,没有任何参数时,则只申请内存,但不对该内存做任何写入操作,当参数个数大于等于一个时,通过memset向内存填充0值。

第一次执行的时候,不带任何参数,ps输出如下:

VSZ的大小是539M,而RSS只有3M。可见,尽管应用申请了内存,但因为没有使用,实际上并没有占用什么资源。

第二次执行的时候,使用一个参数,ps输出如下:

这时,VSZ大小不变,仍然是539M,而RSS则增加到了527M。由于使用memset对申请的内存执行了写入操作,所以内核必须要真正分配给该应用物理内存了。

PS: 测试代码位于https://github.com/gfreewind/LinuxDetails/blob/master/mem/1.vsz_and_rss/vsz_and_rss.cpp

本文分享自微信公众号 - LinuxerPub(LinuxerPub),作者:glinuxer

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 系统编程语言Rust特点介绍(1)

    最近在学习Rust语言,感觉这门语言有点意思,因此写一篇文章分享。我不会去介绍Rust的基本语法,什么变量声明,if..else..,循环等等。这些东西,文档介...

    glinuxer
  • 细说TCP的MSS选项(2)

    上周因为发烧没办法坚持每“周一”更 —— 再次感叹“每周一更”这个名字,先给大家道声抱歉。

    glinuxer
  • 应用层如何强制发送RST即相关内核实现

    前几天群里有个同学问,“如何让应用层强制发送RST中止连接”,而不是通过FIN包的四次交互来关闭连接。当时,我只是凭借以往的经验,猜测使用lin...

    glinuxer
  • PHP Multipart/form-data remote DOS 防御方案研究

    这个的DOS漏洞炒得很火,百度安全攻防实验室的小伙伴也很给力。我个人认为漏洞的影响确实很大,毕竟对于一个web应用,拒绝服务攻击可以说是杀死它最简单的方法。这样...

    phith0n
  • SQLi-Labs环境搭建

    对于想要学习web安全的同学 , 这是一个非常好的学习有关SQL注入的学习资料 类似于闯关的模式 , 每一个关卡都有非常多的思路和利用方式 这些关卡包含了各种常...

    HACK学习
  • 电商如何进行精细化运营?

    背景:在互联网及移动设备不断普及的时代背景下,越来越多的国内传统品牌商及国际知名品牌为提高销售规模纷纷试水电商业务。基于电商市场的持续扩增以及品牌商电商化的业务...

    1480
  • 新用户引导UI界面,这么设计才更优秀!

    新用户引导绝对是个瓶颈。花费时间设计和开发,找了用户测试调研,最后上线了,依然拦不住汹涌的用户流失潮。

    用户5009027
  • 增长黑客国内落地实践

    摘要 Growthhacking 更像是专门为初创企业设立的 marketing 部门,与现在火爆的 lean startups 其实是相通的。growth h...

    IT大咖说
  • 知数堂联合创始人叶金荣:MySQL 5.7新时代

    摘要 MySQL 5.7版本新增了很多特别实用的功能,截止目前已经发布5.7.17版本,也越来越成熟了,而且Group Replication也GA了。就让我们...

    IT大咖说
  • Qt关闭窗口之小坑

      执行下列代码后点击右上角"X"号居然退出不了程序,而是隐藏了窗口。原以为会恢复正常退出程序的功能,其实不然。

    Qt君

扫码关注云+社区

领取腾讯云代金券