2012-07-11 124 views
0

我有一個在RHEL 4機器下運行的C編寫的守護進程。Linux的RSS和共享內存

守護進程訪問一段共享內存(無非是一大串65536個元素)。沒有malloc/free被完成。

我觀察到ps aux表明守護程序的共享內存大小+一些kb作爲VSZ,只是一些kb作爲RSS。

然後,守護進程訪問共享內存數組越多,RSS就越增加,直到達到大約相同大小的VSZ。

爲什麼Linux用這種方式計算RSS?

我的意思是......共享內存不應該被忽視,內存由一個單一的過程consumpted(RSS),因爲它可以通過許多其他可運行來訪問?

爲什麼它提高RSS只是訪問共享內存?

回答

0

RSS是映射到你的進程物理內存量。

Linux的採用demand paging使物理內存僅被映射在第一次訪問。 VSZ是虛擬內存,可以根據需要獲得物理內存的支持。這就解釋了爲什麼在訪問更多的共享內存映射時,RSS會增長。