Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何衡量应用程序或进程的实际内存使用情况?_Linux_Memory_Process - Fatal编程技术网

Linux 如何衡量应用程序或进程的实际内存使用情况?

Linux 如何衡量应用程序或进程的实际内存使用情况?,linux,memory,process,Linux,Memory,Process,这个问题被详细地介绍了。 如何衡量Linux中应用程序或进程的内存使用情况 从的博客文章中可以看出,ps并不是用于此目的的准确工具 为什么ps是“错误的” 根据您的看法,ps不会报告进程的实际内存使用情况。它真正做的是显示如果它是唯一运行的进程,每个进程将占用多少实际内存。当然,一台典型的Linux机器在任何给定的时间都有几十个进程在运行,这意味着ps报告的VSZ和RSS编号几乎肯定是错误的 使用ps或类似工具,您只能获得该进程分配的内存页数量。这个数字是正确的,但是: 不反映应用程序使用的实

这个问题被详细地介绍了。

如何衡量Linux中应用程序或进程的内存使用情况

从的博客文章中可以看出,
ps
并不是用于此目的的准确工具

为什么
ps
是“错误的”

根据您的看法,
ps
不会报告进程的实际内存使用情况。它真正做的是显示如果它是唯一运行的进程,每个进程将占用多少实际内存。当然,一台典型的Linux机器在任何给定的时间都有几十个进程在运行,这意味着
ps
报告的VSZ和RSS编号几乎肯定是错误的


使用
ps
或类似工具,您只能获得该进程分配的内存页数量。这个数字是正确的,但是:

  • 不反映应用程序使用的实际内存量,仅反映为其保留的内存量

  • 如果页面共享,例如由多个线程或使用动态链接库共享,则可能会产生误导

如果您确实想知道应用程序实际使用了多少内存,则需要在探查器中运行它。例如,可以让您了解所使用的内存量,更重要的是,了解程序中可能存在的内存泄漏。Valgrind的堆探查器工具称为“massif”:

Massif是一个堆分析器。它通过获取程序堆的常规快照来执行详细的堆分析。它生成一个图表,显示一段时间内堆的使用情况,包括程序中负责内存分配最多的部分的信息。图形由文本或HTML文件补充,该文件包含更多信息,用于确定分配的内存最多的位置。Massif运行程序的速度比正常速度慢20倍左右

如中所述,您需要通过Valgrind运行程序:

valgrind --tool=massif <executable> <arguments>
valgrind--tool=massif。但是我发现Valgrind附带的一个简单的基于文本的工具<;code>ms_print
,已经非常有用了


要查找内存泄漏,请使用valgrind的(默认)
memcheck
工具。

很难确定,但这里有两个“关闭”的方法可以帮助您

$ ps aux
将为您提供虚拟大小(VSZ)

您还可以通过转到
/proc/$pid/status
从/proc文件系统获取详细的统计信息

最重要的是VmSize,它应该接近
ps aux
给出的值

/proc/19420$ cat status Name: firefox State: S (sleeping) Tgid: 19420 Pid: 19420 PPid: 1 TracerPid: 0 Uid: 1000 1000 1000 1000 Gid: 1000 1000 1000 1000 FDSize: 256 Groups: 4 6 20 24 25 29 30 44 46 107 109 115 124 1000 VmPeak: 222956 kB VmSize: 212520 kB VmLck: 0 kB VmHWM: 127912 kB VmRSS: 118768 kB VmData: 170180 kB VmStk: 228 kB VmExe: 28 kB VmLib: 35424 kB VmPTE: 184 kB Threads: 8 SigQ: 0/16382 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000020001000 SigCgt: 000000018000442f CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 Cpus_allowed: 03 Mems_allowed: 1 voluntary_ctxt_switches: 63422 nonvoluntary_ctxt_switches: 7171 /proc/19420$cat状态 名称:firefox 州:S(睡眠) Tgid:19420 Pid:19420 PPid:1 跟踪PID:0 Uid:1000 Gid:1000 尺寸:256 组别:46 20 24 25 29 30 44 46 107 109 115 124 1000 峰值:222956KB 虚拟机大小:212520 kB VmLck:0 kB VmHWM:127912 kB VmRSS:118768 kB VmData:170180 kB VmStk:228KB VmExe:28 kB VmLib:35424KB VmPTE:184KB 线程:8 SigQ:0/16382 SigPnd:0000000000000000 ShdPnd:0000000000000000 SigBlk:0000000000000000 信号:00000000 2000000 SigCgt:0000000 18000442F CapInh:0000000000000000 CapPrm:0000000000000000 资本支出:0000000000000000 允许的CPU数量:03 允许的Mems数量:1 自愿性_-ctxt_开关:63422 非容积式ctxt开关:7171 得到。让它运行你的程序,它会告诉你大量的内存使用情况


这只适用于运行一段时间并停止的程序。我不知道Valgrind是否能够控制一个已经运行的进程,或者不应该停止进程,比如守护进程。

没有任何简单的方法来计算这一点。但有些人试图得到一些好的答案:

    • 再次投票支持这里,但我想补充一点,您可以使用类似的工具来帮助您解释Valgrind生成的结果


      我一直在使用这两个工具,并且总是有精简、无泄漏的代码可以自豪地展示;)

      对此没有一个单一的答案,因为您无法精确指出进程使用的内存量。Linux下的大多数进程都使用共享库

      例如,假设您要计算“ls”进程的内存使用情况。是否只计算可执行文件“ls”使用的内存(如果可以隔离它)?那么libc呢?或者运行“ls”所需的所有其他库

      linux-gate.so.1 =>  (0x00ccb000)
      librt.so.1 => /lib/librt.so.1 (0x06bc7000)
      libacl.so.1 => /lib/libacl.so.1 (0x00230000)
      libselinux.so.1 => /lib/libselinux.so.1 (0x00162000)
      libc.so.6 => /lib/libc.so.6 (0x00b40000)
      libpthread.so.0 => /lib/libpthread.so.0 (0x00cb4000)
      /lib/ld-linux.so.2 (0x00b1d000)
      libattr.so.1 => /lib/libattr.so.1 (0x00229000)
      libdl.so.2 => /lib/libdl.so.2 (0x00cae000)
      libsepol.so.1 => /lib/libsepol.so.1 (0x0011a000)
      
      您可以争辩说,它们是由其他进程共享的,但是如果不加载它们,“ls”就不能在系统上运行


      此外,如果您需要知道一个进程需要多少内存才能进行容量规划,那么您必须计算该进程的每个附加副本使用多少内存。我认为/proc/PID/status可以一次性为您提供足够的内存使用信息。另一方面,它将在程序的整个生命周期中为您提供更好的内存使用概况。

      在最新版本的Linux中,请使用smaps子系统。例如,对于PID为1234的流程:

      cat /proc/1234/smaps
      

      它将准确地告诉您它当时使用了多少内存。更重要的是,它将内存分为私有内存和共享内存,这样您就可以知道您的程序实例正在使用多少内存,而不包括多个程序实例之间共享的内存。

      如果您想要比使用Valgrind评测更快的内存,并且您的内核更旧,并且您不能使用SMAP,带有显示进程常驻集选项的ps(带有
      ps-o rss,command
      )可以让您快速、合理地估算正在使用的非交换内存的实际数量。

      这是对工具和问题的极好总结:

      我将引用它,以便更多的开发人员能够真正阅读它

      如果您想分析wh的内存使用情况
      virtual                    shared   shared   private  private
      size     RSS      PSS      clean    dirty    clean    dirty    object
      -------- -------- -------- -------- -------- -------- -------- ------------------------------
             4        0        0        0        0        0        0 0:00 0                  [vsyscall]
             4        4        0        4        0        0        0                         [vdso]
            88       28       28        0        0        4       24                         [stack]
            12       12       12        0        0        0       12 7909                    /lib/ld-2.11.1.so
            12        4        4        0        0        0        4 89529                   /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
            28        0        0        0        0        0        0 86661                   /usr/lib/gconv/gconv-modules.cache
             4        0        0        0        0        0        0 87660                   /usr/lib/locale/en_US.utf8/LC_MEASUREMENT
             4        0        0        0        0        0        0 89528                   /usr/lib/locale/en_US.utf8/LC_TELEPHONE
             4        0        0        0        0        0        0 89527                   /usr/lib/locale/en_US.utf8/LC_ADDRESS
             4        0        0        0        0        0        0 87717                   /usr/lib/locale/en_US.utf8/LC_NAME
             4        0        0        0        0        0        0 87873                   /usr/lib/locale/en_US.utf8/LC_PAPER
             4        0        0        0        0        0        0 13879                   /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
             4        0        0        0        0        0        0 89526                   /usr/lib/locale/en_US.utf8/LC_MONETARY
             4        0        0        0        0        0        0 89525                   /usr/lib/locale/en_US.utf8/LC_TIME
             4        0        0        0        0        0        0 11378                   /usr/lib/locale/en_US.utf8/LC_NUMERIC
          1156        8        8        0        0        4        4 11372                   /usr/lib/locale/en_US.utf8/LC_COLLATE
           252        0        0        0        0        0        0 11321                   /usr/lib/locale/en_US.utf8/LC_CTYPE
           128       52        1       52        0        0        0 7909                    /lib/ld-2.11.1.so
          2316       32       11       24        0        0        8 7986                    /lib/libncurses.so.5.7
          2064        8        4        4        0        0        4 7947                    /lib/libdl-2.11.1.so
          3596      472       46      440        0        4       28 7933                    /lib/libc-2.11.1.so
          2084        4        0        4        0        0        0 7995                    /lib/libnss_compat-2.11.1.so
          2152        4        0        4        0        0        0 7993                    /lib/libnsl-2.11.1.so
          2092        0        0        0        0        0        0 8009                    /lib/libnss_nis-2.11.1.so
          2100        0        0        0        0        0        0 7999                    /lib/libnss_files-2.11.1.so
          3752     2736     2736        0        0      864     1872                         [heap]
            24       24       24        0        0        0       24 [anon]
           916      616      131      584        0        0       32                         /bin/bash
      -------- -------- -------- -------- -------- -------- -------- ------------------------------
         22816     4004     3005     1116        0      876     2012 TOTAL
      
      sudo pmap -x <process pid>
      
      #!/bin/ksh
      #
      # Returns total memory used by process $1 in kb.
      #
      # See /proc/NNNN/smaps if you want to do something
      # more interesting.
      #
      
      IFS=$'\n'
      
      for line in $(</proc/$1/smaps)
      do
         [[ $line =~ ^Size:\s+(\S+) ]] && ((kb += ${.sh.match[1]}))
      done
      
      print $kb
      
      ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | awk '{total=total + $1} END {print total}'
      
      gcore <pid>
      
      while true; do ps aux | awk ‚{print $5, $11}’ | grep chrome | sort -n > /tmp/a.txt; sleep 1; diff /tmp/{b,a}.txt; mv /tmp/{a,b}.txt; done;
      
      top
      
      top -p <PID>
      
      top | grep <PROCESS NAME>
      
      $ /usr/bin/time --verbose ls
      (...)
      Command being timed: "ls"
      User time (seconds): 0.00
      System time (seconds): 0.00
      Percent of CPU this job got: 0%
      Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
      Average shared text size (kbytes): 0
      Average unshared data size (kbytes): 0
      Average stack size (kbytes): 0
      Average total size (kbytes): 0
      Maximum resident set size (kbytes): 2372
      Average resident set size (kbytes): 0
      Major (requiring I/O) page faults: 1
      Minor (reclaiming a frame) page faults: 121
      Voluntary context switches: 2
      Involuntary context switches: 9
      Swaps: 0
      File system inputs: 256
      File system outputs: 0
      Socket messages sent: 0
      Socket messages received: 0
      Signals delivered: 0
      Page size (bytes): 4096
      Exit status: 0
      
      echo "IP: "
      read ip
      echo "specfiy pid: "
      read pid
      echo "interval in seconds:"
      read interval
      
      while [ 1 ]
      do
          date
          snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfCPU.$pid
          snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfMem.$pid
          sleep $interval;
      done
      
      ps -eo size,pid,user,command --sort -size | \
          awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' |\
          cut -d "" -f2 | cut -d "-" -f1
      
           0.00 Mb COMMAND 
        1288.57 Mb /usr/lib/firefox
         821.68 Mb /usr/lib/chromium/chromium 
         762.82 Mb /usr/lib/chromium/chromium 
         588.36 Mb /usr/sbin/mysqld 
         547.55 Mb /usr/lib/chromium/chromium 
         523.92 Mb /usr/lib/tracker/tracker
         476.59 Mb /usr/lib/chromium/chromium 
         446.41 Mb /usr/bin/gnome
         421.62 Mb /usr/sbin/libvirtd 
         405.11 Mb /usr/lib/chromium/chromium 
         302.60 Mb /usr/lib/chromium/chromium 
         291.46 Mb /usr/lib/chromium/chromium 
         284.56 Mb /usr/lib/chromium/chromium 
         238.93 Mb /usr/lib/tracker/tracker
         223.21 Mb /usr/lib/chromium/chromium 
         197.99 Mb /usr/lib/chromium/chromium 
         194.07 Mb conky 
         191.92 Mb /usr/lib/chromium/chromium 
         190.72 Mb /usr/bin/mongod 
         169.06 Mb /usr/lib/chromium/chromium 
         155.11 Mb /usr/bin/gnome
         136.02 Mb /usr/lib/chromium/chromium 
         125.98 Mb /usr/lib/chromium/chromium 
         103.98 Mb /usr/lib/chromium/chromium 
          93.22 Mb /usr/lib/tracker/tracker
          89.21 Mb /usr/lib/gnome
          80.61 Mb /usr/bin/gnome
          77.73 Mb /usr/lib/evolution/evolution
          76.09 Mb /usr/lib/evolution/evolution
          72.21 Mb /usr/lib/gnome
          69.40 Mb /usr/lib/evolution/evolution
          68.84 Mb nautilus
          68.08 Mb zeitgeist
          60.97 Mb /usr/lib/tracker/tracker
          59.65 Mb /usr/lib/evolution/evolution
          57.68 Mb apt
          55.23 Mb /usr/lib/gnome
          53.61 Mb /usr/lib/evolution/evolution
          53.07 Mb /usr/lib/gnome
          52.83 Mb /usr/lib/gnome
          51.02 Mb /usr/lib/udisks2/udisksd 
          50.77 Mb /usr/lib/evolution/evolution
          50.53 Mb /usr/lib/gnome
          50.45 Mb /usr/lib/gvfs/gvfs
          50.36 Mb /usr/lib/packagekit/packagekitd 
          50.14 Mb /usr/lib/gvfs/gvfs
          48.95 Mb /usr/bin/Xwayland :1024 
          46.21 Mb /usr/bin/gnome
          42.43 Mb /usr/bin/zeitgeist
          42.29 Mb /usr/lib/gnome
          41.97 Mb /usr/lib/gnome
          41.64 Mb /usr/lib/gvfs/gvfsd
          41.63 Mb /usr/lib/gvfs/gvfsd
          41.55 Mb /usr/lib/gvfs/gvfsd
          41.48 Mb /usr/lib/gvfs/gvfsd
          39.87 Mb /usr/bin/python /usr/bin/chrome
          37.45 Mb /usr/lib/xorg/Xorg vt2 
          36.62 Mb /usr/sbin/NetworkManager 
          35.63 Mb /usr/lib/caribou/caribou 
          34.79 Mb /usr/lib/tracker/tracker
          33.88 Mb /usr/sbin/ModemManager 
          33.77 Mb /usr/lib/gnome
          33.61 Mb /usr/lib/upower/upowerd 
          33.53 Mb /usr/sbin/gdm3 
          33.37 Mb /usr/lib/gvfs/gvfsd
          33.36 Mb /usr/lib/gvfs/gvfs
          33.23 Mb /usr/lib/gvfs/gvfs
          33.15 Mb /usr/lib/at
          33.15 Mb /usr/lib/at
          30.03 Mb /usr/lib/colord/colord 
          29.62 Mb /usr/lib/apt/methods/https 
          28.06 Mb /usr/lib/zeitgeist/zeitgeist
          27.29 Mb /usr/lib/policykit
          25.55 Mb /usr/lib/gvfs/gvfs
          25.55 Mb /usr/lib/gvfs/gvfs
          25.23 Mb /usr/lib/accountsservice/accounts
          25.18 Mb /usr/lib/gvfs/gvfsd 
          25.15 Mb /usr/lib/gvfs/gvfs
          25.15 Mb /usr/lib/gvfs/gvfs
          25.12 Mb /usr/lib/gvfs/gvfs
          25.10 Mb /usr/lib/gnome
          25.10 Mb /usr/lib/gnome
          25.07 Mb /usr/lib/gvfs/gvfsd 
          24.99 Mb /usr/lib/gvfs/gvfs
          23.26 Mb /usr/lib/chromium/chromium 
          22.09 Mb /usr/bin/pulseaudio 
          19.01 Mb /usr/bin/pulseaudio 
          18.62 Mb (sd
          18.46 Mb (sd
          18.30 Mb /sbin/init 
          18.17 Mb /usr/sbin/rsyslogd 
          17.50 Mb gdm
          17.42 Mb gdm
          17.09 Mb /usr/lib/dconf/dconf
          17.09 Mb /usr/lib/at
          17.06 Mb /usr/lib/gvfs/gvfsd
          16.98 Mb /usr/lib/at
          16.91 Mb /usr/lib/gdm3/gdm
          16.86 Mb /usr/lib/gvfs/gvfsd
          16.86 Mb /usr/lib/gdm3/gdm
          16.85 Mb /usr/lib/dconf/dconf
          16.85 Mb /usr/lib/dconf/dconf
          16.73 Mb /usr/lib/rtkit/rtkit
          16.69 Mb /lib/systemd/systemd
          13.13 Mb /usr/lib/chromium/chromium 
          13.13 Mb /usr/lib/chromium/chromium 
          10.92 Mb anydesk 
           8.54 Mb /sbin/lvmetad 
           7.43 Mb /usr/sbin/apache2 
           6.82 Mb /usr/sbin/apache2 
           6.77 Mb /usr/sbin/apache2 
           6.73 Mb /usr/sbin/apache2 
           6.66 Mb /usr/sbin/apache2 
           6.64 Mb /usr/sbin/apache2 
           6.63 Mb /usr/sbin/apache2 
           6.62 Mb /usr/sbin/apache2 
           6.51 Mb /usr/sbin/apache2 
           6.25 Mb /usr/sbin/apache2 
           6.22 Mb /usr/sbin/apache2 
           3.92 Mb bash 
           3.14 Mb bash 
           2.97 Mb bash 
           2.95 Mb bash 
           2.93 Mb bash 
           2.91 Mb bash 
           2.86 Mb bash 
           2.86 Mb bash 
           2.86 Mb bash 
           2.84 Mb bash 
           2.84 Mb bash 
           2.45 Mb /lib/systemd/systemd
           2.30 Mb (sd
           2.28 Mb /usr/bin/dbus
           1.84 Mb /usr/bin/dbus
           1.46 Mb ps 
           1.21 Mb openvpn hackthebox.ovpn 
           1.16 Mb /sbin/dhclient 
           1.16 Mb /sbin/dhclient 
           1.09 Mb /lib/systemd/systemd 
           0.98 Mb /sbin/mount.ntfs /dev/sda3 /media/n0bit4/Data 
           0.97 Mb /lib/systemd/systemd 
           0.96 Mb /lib/systemd/systemd 
           0.89 Mb /usr/sbin/smartd 
           0.77 Mb /usr/bin/dbus
           0.76 Mb su 
           0.76 Mb su 
           0.76 Mb su 
           0.76 Mb su 
           0.76 Mb su 
           0.76 Mb su 
           0.75 Mb sudo su 
           0.75 Mb sudo su 
           0.75 Mb sudo su 
           0.75 Mb sudo su 
           0.75 Mb sudo su 
           0.75 Mb sudo su 
           0.74 Mb /usr/bin/dbus
           0.71 Mb /usr/lib/apt/methods/http 
           0.68 Mb /bin/bash /usr/bin/mysqld_safe 
           0.68 Mb /sbin/wpa_supplicant 
           0.66 Mb /usr/bin/dbus
           0.61 Mb /lib/systemd/systemd
           0.54 Mb /usr/bin/dbus
           0.46 Mb /usr/sbin/cron 
           0.45 Mb /usr/sbin/irqbalance 
           0.43 Mb logger 
           0.41 Mb awk { hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" } 
           0.40 Mb /usr/bin/ssh
           0.34 Mb /usr/lib/chromium/chrome
           0.32 Mb cut 
           0.32 Mb cut 
           0.00 Mb [kthreadd] 
           0.00 Mb [ksoftirqd/0] 
           0.00 Mb [kworker/0:0H] 
           0.00 Mb [rcu_sched] 
           0.00 Mb [rcu_bh] 
           0.00 Mb [migration/0] 
           0.00 Mb [lru
           0.00 Mb [watchdog/0] 
           0.00 Mb [cpuhp/0] 
           0.00 Mb [cpuhp/1] 
           0.00 Mb [watchdog/1] 
           0.00 Mb [migration/1] 
           0.00 Mb [ksoftirqd/1] 
           0.00 Mb [kworker/1:0H] 
           0.00 Mb [cpuhp/2] 
           0.00 Mb [watchdog/2] 
           0.00 Mb [migration/2] 
           0.00 Mb [ksoftirqd/2] 
           0.00 Mb [kworker/2:0H] 
           0.00 Mb [cpuhp/3] 
           0.00 Mb [watchdog/3] 
           0.00 Mb [migration/3] 
           0.00 Mb [ksoftirqd/3] 
           0.00 Mb [kworker/3:0H] 
           0.00 Mb [kdevtmpfs] 
           0.00 Mb [netns] 
           0.00 Mb [khungtaskd] 
           0.00 Mb [oom_reaper] 
           0.00 Mb [writeback] 
           0.00 Mb [kcompactd0] 
           0.00 Mb [ksmd] 
           0.00 Mb [khugepaged] 
           0.00 Mb [crypto] 
           0.00 Mb [kintegrityd] 
           0.00 Mb [bioset] 
           0.00 Mb [kblockd] 
           0.00 Mb [devfreq_wq] 
           0.00 Mb [watchdogd] 
           0.00 Mb [kswapd0] 
           0.00 Mb [vmstat] 
           0.00 Mb [kthrotld] 
           0.00 Mb [ipv6_addrconf] 
           0.00 Mb [acpi_thermal_pm] 
           0.00 Mb [ata_sff] 
           0.00 Mb [scsi_eh_0] 
           0.00 Mb [scsi_tmf_0] 
           0.00 Mb [scsi_eh_1] 
           0.00 Mb [scsi_tmf_1] 
           0.00 Mb [scsi_eh_2] 
           0.00 Mb [scsi_tmf_2] 
           0.00 Mb [scsi_eh_3] 
           0.00 Mb [scsi_tmf_3] 
           0.00 Mb [scsi_eh_4] 
           0.00 Mb [scsi_tmf_4] 
           0.00 Mb [scsi_eh_5] 
           0.00 Mb [scsi_tmf_5] 
           0.00 Mb [bioset] 
           0.00 Mb [kworker/1:1H] 
           0.00 Mb [kworker/3:1H] 
           0.00 Mb [kworker/0:1H] 
           0.00 Mb [kdmflush] 
           0.00 Mb [bioset] 
           0.00 Mb [kdmflush] 
           0.00 Mb [bioset] 
           0.00 Mb [jbd2/sda5
           0.00 Mb [ext4
           0.00 Mb [kworker/2:1H] 
           0.00 Mb [kauditd] 
           0.00 Mb [bioset] 
           0.00 Mb [drbd
           0.00 Mb [irq/27
           0.00 Mb [i915/signal:0] 
           0.00 Mb [i915/signal:1] 
           0.00 Mb [i915/signal:2] 
           0.00 Mb [ttm_swap] 
           0.00 Mb [cfg80211] 
           0.00 Mb [kworker/u17:0] 
           0.00 Mb [hci0] 
           0.00 Mb [hci0] 
           0.00 Mb [kworker/u17:1] 
           0.00 Mb [iprt
           0.00 Mb [iprt
           0.00 Mb [kworker/1:0] 
           0.00 Mb [kworker/3:0] 
           0.00 Mb [kworker/0:0] 
           0.00 Mb [kworker/2:0] 
           0.00 Mb [kworker/u16:0] 
           0.00 Mb [kworker/u16:2] 
           0.00 Mb [kworker/3:2] 
           0.00 Mb [kworker/2:1] 
           0.00 Mb [kworker/1:2] 
           0.00 Mb [kworker/0:2] 
           0.00 Mb [kworker/2:2] 
           0.00 Mb [kworker/0:1] 
           0.00 Mb [scsi_eh_6] 
           0.00 Mb [scsi_tmf_6] 
           0.00 Mb [usb
           0.00 Mb [bioset] 
           0.00 Mb [kworker/3:1] 
           0.00 Mb [kworker/u16:1] 
      
      ps_mem -p <pid>
      
      $ ps_mem -S -p $(pgrep firefox)
      
      Private   +   Shared  =  RAM used   Swap used   Program
      
      355.0 MiB +  38.7 MiB = 393.7 MiB    35.9 MiB   firefox
      ---------------------------------------------
                              393.7 MiB    35.9 MiB
      =============================================
      
      sudo apt-get update
      sudo apt-get install htop
      
      htop