赞
踩
按照内存大小显示前20个进程
ps aux --sort=-%mem | head -20
$ 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
可以看到内存大小从大到小排列,但是有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
由于部分内存是共享的,被多个进程使用,所以如果将所有进程的RSS值加起来可能会大于系统的内存总量。
申请过的内存如果程序没有实际使用,则可能不显示在RSS里。比如说一个程序,预先申请了一大批内存,过了一段时间才使用,你会发现RSS会增长而VSZ保持不变。
还有一个概念是PSS,它是proportional set size(proportional是成比例的意思)的缩写。这是一种新的度量方式。它将动态库所使用的内存按比例划分。比如我们前面例子中的动态库如果是被两个进程使用,那么:
PSS: 400K + (1000K/2) + 100K = 400K + 500K + 100K = 1000K
一个进程中的多个线程共享同样的地址空间。所以一个进程中的多个线程的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 所占用共享内存大小(实际所占用)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。