2012-03-02 128 views
1

我在基於ARM的嵌入式設備上安裝了Linux內核2.6.30。剖析Linux內核使用的內存

我必須在設備上執行一些內核內存使用情況分析。

我想監視各種內核線程和模塊ps輸出的同時,我進行操作,如無線開/關等

你能不能給我建議:

我需要哪些線程監控?如何監視內核模塊的內存使用情況?

+0

什麼是你面對的,讓你想要做的分析問題? – 2012-03-02 19:23:51

+0

@PavanManjunath基本上我們希望有儘可能多的內存可用於應用程序使用。我試圖找出內存被內核佔用/佔用的方式的一些低效率。 – abc 2012-03-02 20:03:54

回答

0

有時候直接從內核獲取真實信息是非常有用的,我已經使用這個小C程序將所有適合shell的輸出格式的系統信息彙集到一起(編譯成一個漂亮的如果該事項小二進制) -

#include <sys/sysinfo.h> 

int main(int argc, char **argv){ 
struct sysinfo info; 
sysinfo(&info); 
printf( "UPTIME_SECONDS=%d\n" 
     "LOAD_1MIN=%d\n" 
     "LOAD_5MIN=%d\n" 
     "LOAD_15MIN=%d\n" 
     "RAM_TOT=%d\n" 
     "RAM_FREE=%d\n" 
     "MEMUSEDKB=%d\n" 
     "RAM_SHARED=%d\n" 
     "RAM_BUFFERS=%d\n" 
     "SWAP_TOT=%d\n" 
     "SWAP_FREE=%d\n" 
     "PROCESSES=%d\n", 
     info.uptime, 
     info.loads[0], 
     info.loads[1], 
     info.loads[2], 
     info.totalram, 
     info.freeram, 
     (info.totalram-info.freeram)*info.mem_unit/1024, 
     info.sharedram, 
     info.bufferram, 
     info.totalswap, 
     info.freeswap, 
     info.procs); 
} 

我用它的外殼是這樣的:

eval `sysinfo` 
BEFORERAM=$MEMUSEDKB 
command & 
sleep .1 #sleep value may need to be adjusted depending on command's run time 
eval `sysinfo` 
AFTERRAM=$MEMUSEDKB 
echo RAMDELTA is $(($AFTERRAM - BEFORERAM))