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

这篇具有很好参考价值的文章主要介绍了深入解析Linux进程内存:VSS、RSS、PSS、USS及查看方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

VSS

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

RSS

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

PSS

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

USS

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

图解

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

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文章来源地址https://www.toymoban.com/news/detail-616129.html

到了这里,关于深入解析Linux进程内存:VSS、RSS、PSS、USS及查看方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux环境下查看因内存占用过大被杀掉的进程

    最近发生两次游戏服务器进程突然消失的事件,查询日志上下文没有找到有用的信息,日志显示运行到某处戛然而止,此处代码逻辑简单,排除异常逻辑导致的服务器进程崩溃,所以联想到之前同一台服务器上部署多个进程,因占用内存太大被内核杀死的情况,猜测本次也是

    2024年02月10日
    浏览(49)
  • Linux如何查看当前占用CPU和内存最多的进程

    查看占用 CPU 最高的前10个进程 查看占用内存(MEM)最高的前10个进程 输入 top 命令,然后按下大写M按照内存MEM排序,按下大写P按照CPU排序

    2024年02月17日
    浏览(54)
  • 【Linux】查看系统各种信息的常用命令 (CPU、内存、进程、网口、磁盘、硬件、等等)

    Linux是一种开源的类Unix操作系统,它有很多不同的发行版,如Ubuntu、CentOS、Debian等。Linux系统提供了很多命令行工具,可以让用户方便地查看和管理系统的各种信息,如硬件配置、内存使用、进程状态、网络连接等。本文将介绍一些常用的命令,以及它们的用法和示例。 使用

    2024年02月15日
    浏览(50)
  • MacOS怎么查看进程占用内存是多少

    在Linux下可以使用 free 命令来方便的查看内存占用情况,如 free -g、free -m等,但MacOS下没有这个命令。 既然如此,那么MacOS里是否有类似的工具呢? 而我们又该如何查看整个PC的内存占用情况,及指定进程的内存占用情况呢? 别急,带着这些疑问请往下看: 1、通过 top 命令来

    2024年02月17日
    浏览(47)
  • 深入浅出:Objective-C中使用MWFeedParser下载豆瓣RSS

    摘要 本文旨在介绍如何在Objective-C中使用MWFeedParser库下载豆瓣RSS内容,同时展示如何通过爬虫代理IP技术和多线程提高爬虫的效率和安全性。 背景 随着信息量的激增,爬虫技术成为了获取和处理大量网络数据的重要手段。Objective-C作为一种成熟的编程语言,配合MWFeedParser库,

    2024年03月15日
    浏览(56)
  • 【Linux进程】查看进程&&fork创建进程

    目录 前言  1. 查看进程  2. 通过系统调用创建进程-fork初识 总结          你有没有想过在使用Linux操作系统时,后台运行的程序是如何管理的?在Linux中,进程是一个非常重要的概念。本文将介绍如何查看当前运行的进程,并且讨论如何使用fork创建新的进程。通过了解这些

    2024年01月22日
    浏览(54)
  • STM32查看内存占用的map文件解析

    双击工程名尽可打开xxx.map文件,里面主要显示了文件及函数使用内存的大小 堆:是用户调用malloc()时申请的内存; 栈:是提供给局部变量使用的,即由c语言机制自动申请和释放; 1.2 flash、ROM、RAM的区别 在stm32中flash就是ROM,掉电数据不会丢失;(通常保存着text段、Code、R

    2024年02月11日
    浏览(41)
  • 【linux】查看进程和子进程

    在Linux系统中,可以使用多个命令来查看进程及其子进程。以下是一些常用的方法: ps 命令用于显示当前进程的状态。可以结合不同的选项来查看进程及其子进程。  查看进程树: - -a 显示所有进程。 - -u 显示进程的用户/所有者。 - -x 显示没有控制终端的进程。 - -f 显示完整

    2024年01月25日
    浏览(39)
  • 【Linux】进程查看|fork函数|进程状态

    🦄 个人主页—— 🎐 开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁🍁🪁🍁🪁 🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油! 目录 一、基本概念 1.1 概念提出 1.2 特征 二、描述进程-PCB 2.1 什么是进程

    2024年02月04日
    浏览(43)
  • 【Linux从入门到放弃】进程概念、查看进程、创建进程

    🧑‍💻作者: @情话0.0 📝专栏:《Linux从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢!   那在还没有学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢?很简单,先把进程描述起来,再

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包