我一直在尋找一種方法來測量Linux上的內存使用情況。我發現了三種主要的做法,我不確定我應該使用什麼,因此我在這裏詢問意見。通過系統調用在Linux上監控內存
看來的 監測記憶中最普遍的,也許更簡單的方法是讀取/ proc /進程/狀態和閱讀的 相應的字段,
VmSize
,VmData
或什麼的。這是 程序ps,to,vmstat設法收集這些信息的方式(我的意思是, monitoring/proc/pid/...)。此信息將提供 即時信息。我可以調用一個fork,然後執行一個exec來運行我想要 的程序來監視wait4,以填充一個rusage結構。從那裏 我可以閱讀所需的領域。看起來雖然在Linux中, wait4沒有填充rsusage結構中的內存字段,但只有 與CPU使用相關的字段。這是時間命令獲取 的方式。
我可以更改strace代碼,以跟蹤所有超級brk, mmap,munmap系統調用,並總結得到堆大小。 這裏很難解碼所有可能的mmap參數,只讀 ,read | write,exec等,並測試返回值以確定 系統是否成功。
對於3),你認爲我可以用這種方式來測量內存使用情況嗎?這會太難嗎?我對strace代碼有很好的理解,但是我對內存不夠了解,不知道這是否可行。
爲什麼不使用第一種方法?如果操作系統已經爲你做了檢測工具,爲什麼要試用呢? – NPE