2011-05-30 110 views
2

我想比較一組進程動態分配的堆的最大數量。 Linux中是否有任何系統命令或任何自動執行此操作的應用程序?就像一個運行進程並監視進程消耗多少內存的監視工具。計算進程消耗的最大空閒存儲內存

不幸的是,size(1)命令只反映了文本數據的進程使用的平均內存的程序和過程會計報告存儲器部分。

+0

嗯,你的意思是不是'其他top'? – 2011-05-30 19:40:07

+0

我怎麼知道的最大內存使用量通過使用top的進程?請繼續關注內存使用情況值? – Pirooz 2011-05-30 19:48:15

回答

1

pmap不錯,但它只給你一個快照,不是最大值。你可能想看看getrusage()。在新ish內核(2.6.32;不確定確切的截止),ru_ * rss字段實際上是填充的。 (在舊版本的內核,他們總是被置爲零......)

也可以嘗試「執行cat/proc/<PID> /狀態」,並在VmPeak(顯示了峯值虛擬內存使用量)和VmHWM看(這表明高峯常住組大小)。這些都是「高水位」,就像它們在一個過程中一直上升一樣,但從不下降。如果您可以在流程終止時抓取它們的快照,則可以自己收集數據。

我曾經寫過一個.so做到這一點;它通過修補exit()(並且你使用LD_PRELOAD調用它)來工作。但它的工作和我沒有副本:-(。