28

実行すると、次のようになりperf stat lsます。

Performance counter stats for 'ls':

          1.388670 task-clock                #    0.067 CPUs utilized          
                 2 context-switches          #    0.001 M/sec                  
                 0 cpu-migrations            #    0.000 K/sec                  
               266 page-faults               #    0.192 M/sec                  
           3515391 cycles                    #    2.531 GHz                    
           2096636 stalled-cycles-frontend   #   59.64% frontend cycles idle   
   <not supported> stalled-cycles-backend  
           2927468 instructions              #    0.83  insns per cycle        
                                             #    0.72  stalled cycles per insn
            615636 branches                  #  443.328 M/sec                  
             22172 branch-misses             #    3.60% of all branches        

       0.020657192 seconds time elapsed

Stalled-cycles-backendが「サポートされていません」と表示されるのはなぜですか? この値を確認するには、どのような種類の CPU、ハードウェア、カーネル、またはユーザー空間ソフトウェアが必要ですか?

perf現在、異なる Intel Core i5 および i7 システム (Ivy Bridge タイプ) で、バージョンが一致する Linux 3.12 for x86_64 の RHEL でこれを試しました。いずれもStalled-cycles-backendをサポートしていません。

いくつかの詳細情報:

$ perf list | grep stalled
  stalled-cycles-frontend OR idle-cycles-frontend    [Hardware event]
  stalled-cycles-frontend OR cpu/stalled-cycles-frontend/ [Kernel PMU event]

$ ls /sys/devices/cpu/events/
branch-instructions  bus-cycles    cache-references  instructions  mem-stores
branch-misses        cache-misses  cpu-cycles        mem-loads     stalled-cycles-frontend

$ cat /sys/bus/event_source/devices/cpu/events/stalled-cycles-frontend
event=0x0e,umask=0x01,inv,cmask=0x01

編集: AMD Phenom II X6 1045T CPU で、Linux 3.2 (32 ビット) を搭載した Ubuntu 12.04 でこれを試してみまし

4

3 に答える 3

26

perfIvy Bridge がサポートするすべてのパフォーマンス監視イベントを理解するために更新されていないようです。幸いなことに、パフォーマンス監視イベントの完全なリストにアクセスできる一般的なインターフェイスがありますが、これは面倒ではあります。ざっと見たときはリストに表示されませんでしたstalled-cycles-backendが、見落としたか、バックエンドを停止させる可能性のあるさまざまなイベントによって分類された可能性があります。

私たちはから始めます

perf list --help

...次の注を示します

    1. Intel(R) 64 and IA-32 Architectures Software Developer's Manual
       Volume 3B: System Programming Guide
       http://www.intel.com/Assets/PDF/manual/253669.pdf

...あなたがたどり着くそのURLで武装する

http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf

...セクション19.3が必要です

19.3 第 3 世代インテル® Core™ プロセッサーのパフォーマンス監視イベント 第 3 世代インテル® Core™ プロセッサーおよびインテル Xeon プロセッサー E3-1200 v2 製品ファミリは、インテル マイクロアーキテクチャ コードネーム Ivy Bridge に基づいています。これらは、表 19-1 にリストされているアーキテクチャ パフォーマンス監視イベントをサポートします。表 19-5 に、プロセッサ コアの非アーキテクチャ パフォーマンス監視イベントを示します。表 19-5 のイベントは、値が 06_3AH の DisplayFamily_DisplayModel エンコーディングの CPUID 署名を持つプロセッサに適用されます。

...だからarchitecturalあなたが必要とするイベントのために 表19-1

19.1 アーキテクチャ パフォーマンス監視イベント アーキテクチャ パフォーマンス イベントは、Intel Core Solo および Intel Core Duo プロセッサに導入されました。これらは、Intel Core マイクロアーキテクチャに基づくプロセッサでもサポートされています。表 19-1 に、汎用パフォーマンス カウンタおよび関連するイベント選択レジスタを使用して構成できる定義済みのアーキテクチャ パフォーマンス イベントを示します。

** 表 19-1. 建築パフォーマンスイベント

ここに画像の説明を入力

ここに画像の説明を入力

... ここでトリッキーな部分が来ます。 をUMask Value上位 2 桁の 16 進数として取り、Event Numは に与えられる 4 桁の 16 桁のハードウェア レジスタ番号の下位 2 桁の 16 進数perf statです。

perf stat --help
   -e, --event=
       Select the PMU event. Selection can be a symbolic event name (use
       perf list to list all events) or a raw PMU event (eventsel+umask) in
       the form of rNNN where NNN is a hexadecimal event descriptor.

... と書いてありNNNますが、あなたはそれを与えることができますNNNNperf statこれが機能することを確認して、シンボリック イベント名と表 19-1 の 16 進数の両方でキャッシュ ミスを求めてみましょう。date簡単にするために、コマンドを呼び出します。

$ perf stat -e r412e -e cache-misses date

Fri Mar 28 09:28:52 CDT 2014

Performance counter stats for 'date':

          2292 r412e                                                       
          2292 cache-misses                                                

   0.003322663 seconds time elapsed

$ 

ご覧のとおり、どちらも同じ数値を報告しており、これまでのところ良好です。次に、アーキテクチャ以外のハードウェア レジスタについて表 19-5 に進みます。ここにはリストが多すぎますが、いくつかをリストします。

ここに画像の説明を入力

于 2014-03-28T14:34:56.343 に答える