美文网首页
内存:VSS/RSS/PSS/USS区别和监控

内存:VSS/RSS/PSS/USS区别和监控

作者: 宇辰星君 | 来源:发表于2021-10-26 15:34 被阅读0次

    软件开发的最后阶段就是测试,了解软件整体的cpu和mem使用情况,之前一直用ps来确定cpu使用率和rss内存,最近监控python多进程软件时,累积rss竟然超过了节点物理内存126G,原因在此处梳理下。

    先说结论:一般情况下有:VSS >= RSS >= PSS >= USS

    VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
    RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
    PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
    USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
    

    区别

    • VSS : Virtual Set Size 虚拟耗用内存(包含共享库占用的内存),即单个进程全部可访问的地址空间,其大小可能包括还尚未在内存中驻留的部分。对于确定单个进程实际内存使用大小,VSS用处不大。
    • RSS : Resident Set Size 实际使用物理内存(包含共享库占用的内存),即单个进程实际占用的内存大小,RSS不太准确的地方在于它包括该进程所使用共享库全部内存大小。对于一个共享库,可能被多个进程使用,实际该共享库只会被装入内存一次。
    • PSS : Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)PSS相对于RSS计算共享库内存大小是按比例的。N个进程共享,该库对PSS大小的贡献只有1/N。
    • USS : Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)即单个进程私有的内存大小,即该进程独占的内存部分。USS揭示了运行一个特定进程在的真实内存增量大小。如果进程终止,USS就是实际被返还给系统的内存大小。
    区别

    监控

    smem -k
    USS是每个进程独自占用的内存,所有进程的PSS累加起来就应该是物理内存,资源监控可看这两个指标。

    python各个子进程内存占用

    应用

    执行如下命令,可监控多进程python软件的总内存使用情况(每分钟查询一次、共查5次)。

    for i in {1..5};do echo `date && smem --userfilter="root" --processfilter="/opt/python2/bin/python2.7" -k -c "command uss pss rss" -t | tail -n -1` >> monitor.mem.log && sleep 1m;done
    

    参考:

    相关文章

      网友评论

          本文标题:内存:VSS/RSS/PSS/USS区别和监控

          本文链接:https://www.haomeiwen.com/subject/pbfyaltx.html