我在一个基于ARM的嵌入式设备上安装了linux内核2.6.30。
我必须在设备上执行一些内核内存使用情况分析。
我正在考虑监控各种内核线程和模块上的ps输出,同时执行wifi开/关等操作。
你能推荐我吗?
我需要监控哪些线程?如何监控内核模块内存使用情况?
发布于 2012-03-06 10:33:31
有时直接从内核获取真实的信息是很有用的,我使用了我拼凑的这个小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);
}我在shell中这样使用它:
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 ))https://stackoverflow.com/questions/9526908
复制相似问题