当前位置:   article > 正文

linux查看系统内存占用排序以及VSZ、RSS内存的区别 什么是虚存、实存、共享内存

rss内存

按照内存大小显示前20个进程

ps aux --sort=-%mem | head -20 
  • 1
$ ps aux --sort=-%mem | head -20
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
nvidia    469117 66.2 16.6 41568364 5202684 pts/6 Sl  15:08   4:24 mainboard -d /apollo/modules/perception/production/dag/dag_streaming_perception_trafficlights.dag
nvidia      4420 72.3 14.1 40500176 4435756 pts/0 Sl  13:58  55:05 mainboard -d modules/prediction/dag/prediction.dag -p mainboard_default -s CYBER_DEFAULT
nvidia      4915 56.8 13.0 39041860 4068040 pts/1 Sl+ 13:59  43:12 ./rs_sdk_demo
nvidia    471489 67.4  2.7 2994036 856136 pts/6  Sl   15:08   4:15 mainboard -d modules/drivers/camera/dag/camera_apollo_3_0.dag -p mainboard_default -s CYBER_DEFAULT
nvidia    121573  7.6  2.7 5271252 853804 ?      Sl   14:17   4:24 /usr/lib/firefox/firefox -new-window
nvidia      6681  8.2  2.3 3062260 723344 pts/5  Sl+  14:00   6:07 cyber_monitor
nvidia      3780  4.6  2.0 5457740 652952 ?      Rsl  13:58   3:35 /usr/bin/gnome-shell
nvidia      4423  146  1.9 5674744 620008 pts/0  Sl   13:58 111:33 mainboard -d modules/perception/production/dag/dag_streaming_perception_mems.dag -p mainboard_default -s CYBER_DEFAULT
nvidia      4419 91.9  1.8 5421840 586128 pts/0  Sl   13:58  70:01 mainboard -d modules/perception/production/dag/dag_streaming_perception_rs.dag -p mainboard_default -s CYBER_DEFAULT
nvidia      4424 45.7  1.7 4869580 552084 pts/0  Sl   13:58  34:51 mainboard -d modules/perception/production/dag/dag_streaming_perception_fusion.dag -p mainboard_default -s CYBER_DEFAULT
nvidia     33279  4.5  1.0 44568684 316284 ?     Sl   14:04   3:11 /usr/share/code/code --type=renderer --enable-crashpad --crashpad-handler-pid=33096 --enable-crash-reporter=e15b358d-4308-4fea-a75a-4eed6bf1f953,no_channel --user-data-dir=/home/nvidia/.config/Code --standard-schemes=vscode-webview,vscode-file --secure-schemes=vscode-webview,vscode-file --bypasscsp-schemes --cors-schemes=vscode-webview,vscode-file --fetch-schemes=vscode-webview,vscode-file --service-worker-schemes=vscode-webview --streaming-schemes --app-path=/usr/share/code/resources/app --no-sandbox --no-zygote --enable-blink-features=HighlightAPI --lang=en-US --num-raster-threads=4 --enable-main-frame-before-activation --renderer-client-id=4 --launch-time-ticks=441823188 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,15472344108584902131,18272031511797820233,131072 --disable-features=CalculateNativeWinOcclusion,SpareRendererForSitePerProcess --vscode-window-config=vscode:1fd7e1b4-4bd7-4c5a-b5ce-55338bb22888 --enable-crashpad
nvidia      4422  6.1  0.8 2199144 268716 pts/0  Sl   13:58   4:41 mainboard -d modules/bridge/dag/bridge_receiver_robosense.dag -p mainboard_default -s CYBER_DEFAULT
nvidia      4421  7.0  0.8 2062524 268584 pts/0  Sl   13:58   5:23 mainboard -d modules/bridge/dag/bridge_sender_robosense.dag -p mainboard_default -s CYBER_DEFAULT
nvidia      5015  0.0  0.8 2423184 259128 pts/5  Tl   13:59   0:03 cyber_monitor
nvidia    148403  0.5  0.7 2706576 243812 ?      Sl   14:21   0:17 /usr/lib/firefox/firefox -contentproc -childID 14 -isForBrowser -prefsLen 10049 -prefMapSize 245530 -jsInitLen 277128 -parentBuildID 20220608170832 -appDir /usr/lib/firefox/browser 121573 tab
nvidia      5518  0.0  0.7 2425580 241324 pts/5  Tl   14:00   0:00 cyber_monitor
nvidia      4910 14.1  0.7 2270644 240720 pts/0  Sl   13:59  10:46 mainboard -d /apollo/modules/canbus/dag/canbus.dag -p canbus -s CYBER_DEFAULT
nvidia      4417  4.3  0.7 2336800 240444 pts/0  Sl   13:58   3:20 mainboard -d modules/transform/dag/static_transform.dag -p mainboard_default -s CYBER_DEFAULT
nvidia     34368  4.6  0.7 38181356 234044 ?     Sl   14:04   3:15 /usr/share/code/code --ms-enable-electron-run-as-node /usr/share/code/resources/app/out/bootstrap-fork --type=fileWatcher

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

可以看到内存大小从大到小排列,但是有VSZ RSS的区别。而且CSZ十分的大甚至超过我们设备的存储空间。

RSS是Resident Set Size(常驻内存大小)的缩写,用于表示进程使用了多少内存(RAM中的物理内存),RSS不包含已经被换出的内存。RSS包含了它所链接的动态库并且被加载到物理内存中的内存。RSS还包含栈内存和堆内存。

VSZ是Virtual Memory Size(虚拟内存大小)的缩写。它包含了进程所能访问的所有内存,包含了被换出的内存,被分配但是还没有被使用的内存,以及动态库中的内存。

假设进程A的二进制文件是500K,并且链接了一个2500K的动态库,堆和栈共使用了200K,其中100K在内存中(剩下的被换出或者不再被使用),一共加载了动态库中的1000K内容以及二进制文件中的400K内容至内存中,那么:

RSS: 400K + 1000K + 100K = 1500K
VSZ: 500K + 2500K + 200K = 3200K
  • 1
  • 2

由于部分内存是共享的,被多个进程使用,所以如果将所有进程的RSS值加起来可能会大于系统的内存总量。

申请过的内存如果程序没有实际使用,则可能不显示在RSS里。比如说一个程序,预先申请了一大批内存,过了一段时间才使用,你会发现RSS会增长而VSZ保持不变。

还有一个概念是PSS,它是proportional set size(proportional是成比例的意思)的缩写。这是一种新的度量方式。它将动态库所使用的内存按比例划分。比如我们前面例子中的动态库如果是被两个进程使用,那么:

PSS: 400K + (1000K/2) + 100K = 400K + 500K + 100K = 1000K

  • 1
  • 2

一个进程中的多个线程共享同样的地址空间。所以一个进程中的多个线程的RSS,VSZ,PSS是完全相同的。linux下可以使用ps或者top命令查看这些信息。

什么是虚存、实存、共享内存?

虚存 ( VIRT = SWAP交换区 + RES 实际占用实存):进程 “需要的” 虚拟内存大小。包括进程使用库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等。例如:申请10MB,使用1MB,依然增长到10MB。

实存( RES = CODE代码 + DATA数据 ):包括使用中的 malloc, new分配的堆空间和分配的栈空间,但不包括 swap out 量。虚存是包含实存的。例如:申请10MB,使用1MB,实际增长内存1MB。

共享内存( SHR ):自身,也包括其它进程的共享内存。进程只使用了几个共享库的函数,但包含整个共享库大小,这些库对于每个进程而言都是公用的,它们在内存中实际只会加载一份,这部分称为共享内存。某个进程所占的物理内存大小:RES 实存 - SHR 所占用共享内存大小(实际所占用)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/309027
推荐阅读
相关标签
  

闽ICP备14008679号