Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.3.3. 使用 Massif 側寫堆積與堆疊空間

Massif 會取得特定程式所使用的堆積空間;包括使用空間與其它用來記錄、調整所分配到的額外空間。這可以幫助您降低程式所使用的記憶體量,進而增加程式速度、降低程式耗盡電腦的置換空間的可能性。Massif 也提供了詳細資料,讓您得知程式的哪一部分取用了堆積記憶體。執行 Massif 的程式之執行速度會比正常情況慢約 20 倍。
要側寫程式的堆積使用量,請指定 massif 作為 Valgrind 所要使用的工具:
# valgrind --tool=massif program
Massif 所蒐集的側寫資料會被寫入至檔案中,預設檔案為 massif.out.pid,其中 pid 是所指定的 program(程式)之程序 ID。
這側寫資料可透過 ms_print 指令來製作圖表,如:
# ms_print massif.out.pid
這產生的圖表會顯示程式執行期間的記憶體使用量,以及程式中在多個地方負責分配的點,包括分配記憶體極峰值的點。
Massif 提供了多種命令列選項,將結果輸出。可用選項包括:
--heap
指定是否要對堆積進行側寫。預設值為 yes(是)。把這選項設定為 no(否)將不會對堆積進行側寫。
--heap-admin
指定側寫堆積時,管理所需的區塊位元組數目。預設值為每個區塊 8 個位元。
--stacks
指定是否要對堆疊進行側寫。預設值為 no(停用)。要啟用對堆疊的側寫,請將此選項設為 yes(啟用),但請注意,這會大幅降低 Massif 的速度。也請注意 Massif 會假定主堆疊的起始大小為零,方便控制程式側寫時,堆疊部分的大小。
--time-unit
指定側寫時所用的時間單位。此選項可用的三種值為:所執行的指令(i),亦為預設值,適用於大部分情況;即時(ms,單位為 ms),可以用在某些情況下;以及分配 / 取消分配給堆積與 / 或堆疊的位元組(B),用於執行時間非常短的程式、以及測試環境,因為這選項非常容易在不同機器上執行。此選項在將 Massif 的結果用 ms_print 圖形化時,非常有用。
欲知完整的選項清單,請參閱 /usr/share/doc/valgrind-version/valgrind_manual.pdf