2012-03-02 129 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))