2016-11-26 6 views
1

プロジェクトを最適化しようとしており、I/Oを見てプロジェクトの効率性を分析したいと考えています。 プロジェクトは、ローカルディレクトリのファイルとディレクトリにのみ影響しますが、これは少し簡単です。 I/O操作の数が少ないと仮定すると、プロセスAが開始されてからプロセスAが終了するまでのすべてのファイルシステム操作を監視または単純にカウントする方法があります。 ?これを可能にするツールはありますか?私はMacOS上にいますが、* nixまたはMacOSのどちらかで動作するものを探すことになります。ディレクトリ内のすべてのファイルシステム操作を一定期間にわたってカウントする

これを行うにはどうすればいいですか?ローカルファイルシステムのI/Oに基づいてアプリケーションのパフォーマンスを分析する方法

これは(ただしいないサーバ)のNode.jsアプリケーションであることを起こる

答えて

3

はい、そのツールが存在します。それはstraceです。

OSXでは、同等のツールはdtrussと表示されます。

straceおよびdtrussのそれぞれは、-cスイッチをサポートしています。 straceに、このスイッチは「システムコールごとに時刻、コール、およびエラーを報告し、プログラム終了時に要約を報告します。 dtrussには、 "システムコールカウントを出力します"。

スイッチ-cスイッチは、あなたが求めているものすべてを提供することができますが、とにかくマニュアルページを調べます。彼らは他のデータも見るように促すかもしれません。

例:

strace -o /tmp/strace.out -e trace=file,open,close,read,write /bin/echo hello 
grep -c '^write' /tmp/strace.out 
$ strace -c -e trace=file,open,close,read,write /bin/echo hello 
hello 
% time  seconds usecs/call  calls errors syscall 
------ ----------- ----------- --------- --------- ---------------- 
36.47 0.000031   10   3   open 
21.18 0.000018   6   3   3 access 
17.65 0.000015   15   1   write 
11.76 0.000010   2   5   close 
    7.06 0.000006   6   1   execve 
    5.88 0.000005   5   1   read 
------ ----------- ----------- --------- --------- ---------------- 
100.00 0.000085     14   3 total 
+1

私は、これはそれを説明して推測:http://stackoverflow.com/questions/174942/how-should-strace-be-used –

+0

私はmmap'が含まれるべきだと思います '。 – CharlesLiuChina

1

はinotify/inotifywatchも、この目的のために使用することができます。

これはファイルシステムの監視を開始するために使用できるカーネルレベルのフックです。それはLinux固有のものです。

REF:https://linux.die.net/man/7/inotify

関連する問題