Linux 內(nèi)存管理中的 RSS 和 VSZ 是什么意思?

RSS 是常駐內(nèi)存集(Resident Set Size),表示該進程分配的內(nèi)存大小。

RSS 不包括進入交換分區(qū)的內(nèi)存。

RSS 包括共享庫占用的內(nèi)存(只要共享庫在內(nèi)存中)

RSS 包括所有分配的棧內(nèi)存和堆內(nèi)存。

VSZ 表示進程分配的虛擬內(nèi)存。

VSZ 包括進程可以訪問的所有內(nèi)存,包括進入交換分區(qū)的內(nèi)容,以及共享庫占用的內(nèi)存。

如果一個進程,程序的大小有 500K,鏈接的共享庫大小有 2500K,堆棧內(nèi)存共有 200K,其中 100K 進入了交換分區(qū)。

進程實際加載了共享庫中的 1000K 的內(nèi)容,以及自己程序的中的 400K 的內(nèi)容。請問 RSS 和 VSZ 應(yīng)是多少?

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

RSS 中有一部分來自共享庫,而共享庫可能被許多進程使用,所以如果把所有進程的 RSS 加起來,可能比系統(tǒng)內(nèi)存還要大。

有一個較新的參數(shù) PSS (proportional set size),它對于共享內(nèi)存的計算與 RSS 不同。參考前面的例子,如果有兩個進程使用同一個共享庫,那么:

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

線程共享同一個地址空間,所以一個進程內(nèi)部的所有線程有相同的 RSS, VSZ 和 PSS??墒褂?ps 或者 top 命令觀察這些信息。

There is way more to it than this, to learn more check the following references:

http://manpages.ubuntu.com/manpages/en/man1/ps.1.html
https://web.archive.org/web/20120520221529/http://emilics.com/blog/article/mconsumption.html

Also see:

https://stackoverflow.com/questions/118307/a-way-to-determine-a-processs-real-memory-usage-i-e-private-dirty-rss

原文連接:
https://stackoverflow.com/questions/7880784/what-is-rss-and-vsz-in-linux-memory-management

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容