linux中,rss全名為“Resident Set Size”,是指常駐記憶體集,表示相應進程在RAM中佔用實際實體記憶體的大小,並不包含在SWAP中佔用的虛擬記憶體。 RSS不包括進入交換分區的內存,但包括共享庫佔用的內存(只要共享庫在內存中)。
本教學操作環境:CentOS 6系統、Dell G3電腦。
Linux記憶體管理中不管是top指令還是ps指令,都會有RSS和VSZ這兩個名詞。例:
[root@localhost ~]# ps aux #查看系统中所有的进程 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 2872 1416 ? Ss Jun04 0:02 /sbin/init root 2 0.0 0.0 0 0 ? S Jun04 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Jun04 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S Jun04 0:00 [ksoftirqd/0] …省略部分输出…
這裡帶大家了解一下RSS和VSZ。
linux RSS
RSS 是常駐記憶體集(Resident Set Size),表示對應程序在RAM中佔用實際實體記憶體的大小,並且不包含在SWAP中佔用的虛擬記憶體。即使是記憶體中的使用了共享庫的記憶體大小也一併計算在內,包含了完整的在stack和heap中的記憶體。
RSS 不包含進入交換分割區的記憶體。
RSS 包含共享庫所佔用的記憶體(只要共享庫在記憶體中)
RSS 包含所有分配的堆疊記憶體和堆疊記憶體。
linux VSZ
VSZ (Virtual Memory Size),表明是虛擬記憶體大小,表明了該進程可以存取的所有內存,包括被交換的記憶體和共享庫記憶體。
VSZ 包括進程可以存取的所有內存,包括進入交換分區的內容,以及共享庫佔用的內存。
範例:
如果進程A的二進位檔案大小為500KB,並且連結到了2500KB的共享庫,有200KB的stack/heap大小,這200KB中又有100KB位於記憶體中,100KB位於SWAP空間中,並且載入了1000KB的共享庫和400KB的自身二進位。則
RSS:
400K + 1000K + 100K = 1500K
VSZ
500K + 2500K + 200K = 3200K
RSS 中有一部分來自共享庫,而共享庫可能被許多進程使用,所以如果把所有進程的RSS 加起來,可能比系統記憶體還要大。
有一個較新的參數 PSS (proportional set size),它對於共享記憶體的計算與 RSS 不同。參考前面的例子,如果有兩個行程使用同一個共享函式庫,那麼:
PSS:
400K (1000K/2) 100K = 400K 500K 100K = 1000K
執行緒共用同一個位址空間,所以一個行程內部的所有執行緒有相同的RSS, VSZ 和PSS。可使用 ps 或 top 指令觀察這些資訊。
相關推薦:《Linux影片教學》
以上是linux中rss是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!