2012-03-02 18 views
1

私は、ARMベースの組み込みデバイス上でLinuxカーネル2.6.30を使用しています。Linuxカーネルで使用されるメモリのプロファイリング

デバイスでカーネルメモリの使用状況をプロファイリングする必要があります。

など、私はオン/オフ、私は無線LANのようなアクションを実行しながら、さまざまなカーネルスレッドとモジュール上のpsの出力を監視することを考えています

あなたは私を提案することができます:

私が監視する必要があり、どのスレッド?どのようにカーネルモジュールのメモリ使用量を監視するのですか?

+0

あなたはそれをどのような問題に直面しているあなたは、プロファイリングをしたいのですか? –

+0

@PavanManjunath基本的には、できるだけ多くのメモリをアプリケーションの利用に利用したいと考えています。私は、メモリがカーネルによって使い切られ/保持されている途中でいくつかの非効率性を理解しようとしています。 – abc

答えて

0

時々、実際の情報をカーネルから直接取得するのに便利ですが、私はこの小さなCプログラムを使って、実際のシステム情報をシェルに適した出力形式で取得しました(かなりコンパイルします小さなバイナリそれが重要な場合) -

#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)) 
関連する問題