統計系統所有程序總共占用多少記憶體

2021-09-26 10:31:58 字數 739 閱讀 4402

常見誤解:

ps  aux 命令顯示的 rss 列來統計全部程序總共占用的物理記憶體大小,這是不合理的。rss(resident set size)表示常駐記憶體的大小,但是由於不同的程序之間會共享記憶體,所以把所有程序rss進行累加的方法會重複計算共享記憶體,得到的結果是偏大的。

正確的方法:

累加 /proc/[1-9]*/smaps 中的 pss 。/proc//smaps 包含了程序的每乙個記憶體對映的統計值,pss(proportional set size)把共享記憶體的rss進行了平均分攤,比如某一塊100mb的記憶體被10個程序共享,那麼每個程序就攤到10mb。這樣,累加pss就不會導致共享記憶體被重複計算了。

統計命令如下:

grep pss /proc/[1-9]*/smaps |awk '; end '

注意:

1.全部程序占用的記憶體並不等於 free 命令所顯示的 "used",因為"used"不僅包含了程序所占用的記憶體,還包含cache/buffer以及kernel動態分配的記憶體等等。

2.【memtotal = memfree + buff/cache + slab + 全部程序占用的記憶體】。這是不對的,原因之一是:程序占用的記憶體包含了一部分page cache,換句話說,就是程序占用的記憶體與page cache發生了重疊。比如程序的mmap檔案對映同時也統計在page cache中。

獲取系統所有程序

delphi的tlhelp32單元封裝了關於程序執行緒,堆,模組的函式和結構。寫 之前先對幾個函式進行一下說明。createtoolhelp32snapshot 函式為指定的程序 程序使用的堆 heap 模組 module 執行緒 thread 建立乙個快照 snapshot 也就是各個程序的這些相...

Python 統計Apache程序占用的物理記憶體比

前面介紹過怎麼統計系統剩餘記憶體 下面這個主要是統計apache程序占用的物理記憶體 我們可以通過以下命令檢視apache有哪些程序及其pid 這些程序所對應的目錄都以pid命名臨時存放在 proc 目錄下,而記錄程序的物理記憶體資訊都記錄在對應的pid目錄下的 status 檔案裡面 vmrss ...

visual c 得到系統所有程序

用createtoolhelp32snapshot process32first process32next api列舉系統程序 在很多情況下需要對系統的程序進行操作,方法有很多種但最常用的是 createtoolhelp32snapshot process32first process32next...