時々、実際の情報をカーネルから直接取得するのに便利ですが、私はこの小さな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))
あなたはそれをどのような問題に直面しているあなたは、プロファイリングをしたいのですか? –
@PavanManjunath基本的には、できるだけ多くのメモリをアプリケーションの利用に利用したいと考えています。私は、メモリがカーネルによって使い切られ/保持されている途中でいくつかの非効率性を理解しようとしています。 – abc