2012-05-01 5 views
1

Linuxスケジューラで、ページフォールトの数を最小限に抑えようとしているプロジェクトを行っています。Linux上のプログラムの測定数のページフォルトが発生しました

私はアルゴリズムの実装を完了しました。私はその効果を測定する必要があります。私はLinuxが、実行プロセス全体で起こったページフォルトの記録的な数にツールを提供するのかどうか疑問に思っています。

基本的に、私は

$ pfstat ./a.out 
page faults: 3 
Execution Time: 1003 ms 

のようなものは、そのようなツールがありますしたいですか?私は、例えば、/usr/bin/timeはページフォルトを報告しますほとんどのシステムでは

答えて

1

...多くの作業になりますこれは、自分でものを書くために決定する前に確認する:

$ /usr/bin/time /bin/true 
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 1632maxresident)k 
40inputs+0outputs (1major+141minor)pagefaults 0swaps 
+0

ありがとうございます!メジャーページフォールトとマイナーページフォールトとはどういう意味ですか? –

+0

メジャーとマイナーが100%明確に定義されているかどうかはわかりません。しかし、一般的に重大な障害は、障害を処理するためにI/Oを行う必要があることを意味します。ディスクからページを読み込みます。 – mpe

+0

Manページから:**重大な障害**:これらはページをディスクから読み込む必要がある障害です。 **マイナーフォールト**:これらは、有効ではないが、他の仮想ページによって主張されていないページのフォルトです。したがって、ページ内のデータは引き続き有効ですが、システムテーブルを更新する必要があります。 – Lazylabs

3

私はperf-statをお勧めします。

$ perf stat make 

Performance counter stats for 'make': 

      4.142908 task-clock    # 0.781 CPUs utilized   
       0 context-switches   # 0.000 K/sec     
       0 CPU-migrations   # 0.000 K/sec     
       318 page-faults    # 0.077 M/sec     
     3,111,777 cycles     # 0.751 GHz      
     1,956,914 stalled-cycles-frontend # 62.89% frontend cycles idle 
     2,275,123 stalled-cycles-backend # 73.11% backend cycles idle 
     11,244,599 instructions    # 3.61 insns per cycle   
              # 0.20 stalled cycles per insn [65.87%] 
    <not counted> branches     
    <not counted> branch-misses   

     0.005305316 seconds time elapsed 

他の多くのパフォーマンスカウンタと同様に、ページフォルトもカウントされます。

ただし、パッケージperfをインストールする必要があります。

関連する問題