深入解析Linux进程内存:VSS、RSS、PSS、USS及查看方式

VSS

虚拟耗用内存大小,是进程可以访问的所有虚拟内存的总量,包括进程独自占用的物理内存、和其他进程共享的内存、分配但未使用的内存。

RSS

驻留内存大小,是进程当前实际占用的物理内存大小,包括进程独自占用的物理内存、和其他进程共享的内存。

PSS

比例驻留内存大小,包括进程独自占用的物理内存、比例分配和其他进程共享的内存(共享库内存会均分到各个共享进程)。

USS

独立内存大小,表示进程独自占用、不与其他进程共享的物理内存。

图解

在这里插入图片描述

Linux进程内存查看方式

ps命令

ps命令可以获取进程的VSS、RSS、内存使用率,其中:

  1. VSZ列表示的VSS,单位是KB;
  2. RSS列的单位是KB;
  3. %MEM列表示的是内存使用率,是进程RSS与系统总物理内存的比值;
[root@localhost ~]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 128620  4484 ?        Ss    2022 228:42 /usr/lib/systemd/systemd
root         2  0.0  0.0      0     0 ?        S     2022   1:47 [kthreadd]
root         3  0.0  0.0      0     0 ?        S     2022  20:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<    2022   0:00 [kworker/0:0H]
......
postgres 31940  0.0  0.0 251780  1256 ?        Ss   May19   1:31 postgres: logger

top命令

top命令可以获取进程的VSS、RSS,其中:

  1. VIRT列表示的是VSS,单位是KB;
  2. RES列表示的是RSS,单位是KB;
[root@localhost ~]# top
top - 20:48:34 up 561 days,  9:34,  2 users,  load average: 0.40, 0.80, 1.18
Tasks: 302 total,   1 running, 301 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.1 us,  0.8 sy,  0.0 ni, 92.8 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 16425244 total,   560044 free, 12011580 used,  3853620 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1632372 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0  492728   4540   1548 S   0.0  0.0 133:41.72 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:11.53 kthreadd
    
31940 postgres  20   0  251780   1256    712 S   0.0  0.0   1:31.24 postmaster

smem命令

smem命令可以获取进程的RSS、PSS、USS,单位是KB。

[root@node-2 ~]# smem
  PID User     Command                         Swap      USS      PSS      RSS
31940 postgres postgres: logger                 876      100      126     1260

pmap命令

pmap命令可以获取进程的VSS,RSS,其中:

  1. Kbytes列表示的VSS,单位是KB;
  2. RSS列的单位是KB;
[root@node-2 ~]# pmap -x 31940
31940:   postgres: logger
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000000400000    7392     216       0 r-x-- postgres
0000000000d37000       4       4       4 r---- postgres

......
---------------- ------- ------- -------
total kB          251784    1260     548

查看进程状态文件

通过查看进程的状态文件,可以获取进程的VSS、RSS,其中:

  1. VmSize表示的是VSS;
  2. VmRSS表示的是RSS;
[root@node-2 ~]# cat /proc/31940/status
Name:   postmaster
Umask:  0077
State:  S (sleeping)
Tgid:   31940
Ngid:   0
Pid:    31940
PPid:   31938
TracerPid:      0
Uid:    26      26      26      26
Gid:    26      26      26      26
FDSize: 64
Groups: 26
VmPeak:   454540 kB
VmSize:   251780 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      2132 kB
VmRSS:      1256 kB
RssAnon:             544 kB
RssFile:             712 kB
RssShmem:              0 kB
VmData:     1040 kB
VmStk:       132 kB
VmExe:      7392 kB
VmLib:     38308 kB
VmPTE:       236 kB
VmSwap:      876 kB
Threads:        1
SigQ:   0/64052
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001307806
SigCgt: 00000001a0000201
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000
NoNewPrivs:     0
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   f
Cpus_allowed_list:      0-3
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        1320418
nonvoluntary_ctxt_switches:     70

通过查看进程的smaps文件,可以获取进程每个内存映射块的详细信息,求和可以得到进程的RSS、PSS、USS,其中:

  1. Private_Clean和Private_Dirty表示进程的私有、不可共享的已清洁(Clean)和已脏(Dirty)内存大小,将这两个值相加即可得到USS。
[root@node-2 ~]# cat /proc/31940/smaps | grep 'Rss' | awk '{Total+=$2} END {print Total"KB"}'
1260KB
[root@node-2 ~]# cat /proc/31940/smaps | grep 'Pss' | awk '{Total+=$2} END {print Total"KB"}'
126KB
[root@node-2 ~]# cat /proc/31940/smaps | grep 'Private' | awk '{Total+=$2} END {print Total"KB"}'
100KB

参考

Process Memory Management in Linux | Baeldung on Linux

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/51267.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#实现滑动拼图验证码

开发环境&#xff1a;C#&#xff0c;VS2019&#xff0c;.NET Core 3.1&#xff0c;ASP.NET Core 1、建立一个验证码控制器 新建两个方法Create和Check&#xff0c;Create用于创建验证码&#xff08;返回2张图片和令牌&#xff09;&#xff0c;Check用于验证&#xff08;验证图…

【iOS】KVC KVO 总结

文章目录 KVC1. KVC赋值原理 setValue:forKey:2. KVC取值原理 valueForKey:3. 注意4. KVC的批量存值和取值 KVO 使用1. KVO的介绍2. KVO监听的步骤注册监听监听实现移除监听例子 3. KVO的传值4. KVO注意5. KVO的使用场景 KVO原理1. KVO的本质是改变了setter方法的调用2. _NSSet…

Glow: Generative Flow with Invertible 1×1 Convolutions论文解析及实现(二)

Glow: Generative Flow with Invertible 11 Convolutions 代码github: https://github.com/rosinality/glow-pytorch添加链接描述 1 模型架构如下 1.1 左边图flow模型 Flow model ① ActNorm ② InvConv2dLU ③ AffineCoupling 1.2 右边模型结构Glow模型 Glow Model Block…

【Linux】-进程概念及进程状态(僵尸进程和孤儿进程)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

更安全,更省心丨DolphinDB 数据库权限管理系统使用指南

在数据库产品使用过程中&#xff0c;为保证数据不被窃取、不遭破坏&#xff0c;我们需要通过用户权限来限制用户对数据库、数据表、视图等功能的操作范围&#xff0c;以保证数据库安全性。为此&#xff0c;DolphinDB 提供了具备以下主要功能的权限管理系统&#xff1a; 提供用户…

OpenMP

官方文档&#xff1a;OpenMP | LLNL HPC Tutorials OpenMP总览 统一内存访问&#xff1a;OpenMP、Pthreads 非统一内存访问&#xff1a;MPI OpenMP与Pthread OpenMP原理 串行区到达并行区后会派生多个线程&#xff0c;并行区代码执行完后进行线程合并&#xff0c;剩下主线程 编…

Linux - PostgreSQL 适用于9.x 以上的 tar.gz 源码安装与理解 - 报错集锦

这里写目录标题 序言主要内容bash 配置文件个人理解关于初始化 PostgreSQL 数据库的理解 启动方法检查服务器是否在PostgreSQL中运行关闭 postgresql 数据库方法参考链接 序言 PostgreSQL 9.x 以下版本笔者没用过&#xff0c;具体操作看参考链接&#xff0c;笔者就不记录重复操…

MODBUS-TCP转Ethernet IP 网关连接空压机 配置案例

本案例是工业现场应用捷米特JM-EIP-TCP的Ethernet/IP转Modbus-TCP网关连接欧姆龙PLC与空压机的配置案例。使用设备&#xff1a;欧姆龙PLC&#xff0c;捷米特JM-EIP-TCP网关&#xff0c; ETHERNET/IP 的电气连接 ETHERNET/IP 采用标准的 T568B 接法&#xff0c;支持直连和交叉接…

在centos 7系统docker上构建mysql 5.7

一、VM上已经安装centos 7.9&#xff0c;且已完成docker的构建 二、安装mysql5.7 安装镜像&#xff1a;[rootlocalhost lll]# docker pull mysql:5.7 查看镜像[rootlocalhost lll]# docker images 根据镜像id构建mysql容器&#xff0c;且分配端口号[rootlocalhost lll]# dock…

自定义view - 玩转字体变色

自定义View步骤&#xff1a; 1>&#xff1a;values__attrs.xml&#xff0c;定义自定义属性&#xff1b; 2>&#xff1a;在第三个构造方法中获取自定义属性&#xff1b; 3>&#xff1a;onMeasure【不是必须的】&#xff1b; 4>&#xff1a;onDraw&#xff1a;绘制代…

emacs打开git仓库下多个子工程的根目录问题解决案

emacs打开git仓库下多个子工程的根目录问题解决案 问题描述 如题所述&#xff0c;这个问题困扰我很久了&#xff0c;一直没搜到完整的解决方案。这次终于乘着空闲时间&#xff0c;研究了projectile.el源码找到了方案。 问题场景具体描述下: 我自己有一个私人git仓库&#x…

机器学习:GPT3

GPT3 模型过于巨大 GPT3是T5参数量的10倍&#xff01; 训练GPT3的代价是$12百万美元 Zero-shot Ability GPT3的思想是不是能拿掉Fine-tune 只需要给定few-shot或者zero-shot就能干相应的任务了。 few-shot learning&#xff08;no gradient descent&#xff09;&#…

(学习笔记)matplotlib.pyplot模块下基本画图函数的整理

matplotlib版本&#xff1a;3.7.1 python版本&#xff1a;3.10.12 基本函数 matplotlib版本&#xff1a;3.7.1python版本&#xff1a;3.10.12 1. plt.plot()函数1.1 plt.plot(x, y)1.2 plt.plot(x, y, **kwargs) 2. plt.xlable(), plt.ylable()3. plt.title()4. plt.show()5.p…

SkyWalking链路追踪-技术文档首页

SkyWalking 文档中文版&#xff08;社区提供&#xff09; (skyapm.github.io)https://skyapm.github.io/document-cn-translation-of-skywalking/ SkyWalking-基本概念 SkyWalking链路追踪是一个用于分布式系统的性能监控工具&#xff0c;它帮助开发人员了解系统中各组件之间…

向量vector模板输出、倒置、求和

运行代码&#xff1a; //向量vector模板输出、倒置、求和 #include"std_lib_facilities.h" //定义vector<double>的输入操作符>> istream& operator>>(istream& is, vector<double>& vv) {double dd0.0;if(is >> dd)vv.p…

【如何训练一个中英翻译模型】LSTM机器翻译模型部署之ncnn(python)(五)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何训练…

Unity光照相关知识和实践 (烘焙光照,环境光设置,全局光照)

简介 本文将会通过一个简单的场景搭建&#xff0c;介绍如何使用烘焙光照以及相关的注意事项。另外还介绍了Unity内全局光照&#xff08;GI&#xff09;的知识和GI实际在游戏内的表现效果。 Unity关于光照相关的参考文档地址&#xff1a;https://docs.unity.cn/cn/current/Man…

Linux CentOS快速安装VNC并开启服务

以下是在 CentOS 上安装并开启 VNC 服务的步骤&#xff1a; 安装 VNC 服务器软件包。运行以下命令&#xff1a; sudo yum install tigervnc-server 输出 $ sudo yum install tigervnc-server Loaded plugins: fastestmirror, langpacks Repository epel is missing name i…

计算机论文中名词翻译和解释笔记

看论文中一些英文的简写不知道中文啥意思&#xff0c;或者一个名词不知道啥意思。 于是自己做了一个个人总结。 持续更新 目录 SoftmaxDeep Learning(深度学习)循环神经网络(Recurrent Neural Network简称 RNN)损失函数/代价函数(Loss Function)基于手绘草图的三维模型检索(Ske…

【笔记】PyTorch DDP 与 Ring-AllReduce

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 文内若有错误&#xff0c;欢迎指出&#xff01; 今天我想跟大家分享的是一篇虽然有点老&#xff0c;但是很经典的文章&#xff0c;这是一个在分布式训练中会用到的一项技术&#xff0c; 实际上叫ringallreduce。 …