26.5. perf c2c を使用した偽共有の検出
この手順では、perf c2c
コマンドを使用して偽共有を検出する方法を説明します。
前提条件
-
perf
ユーザー空間ツールがインストールされている。詳細は perf のインストール を参照してください。 -
perf c2c
コマンドを使用して記録されたperf.data
ファイルは、現在のディレクトリーで利用できます。詳細は、perf c2c でキャッシュライン競合の検出 を参照してください。
手順
perf.data
ファイルを開いて詳細な分析を行います。# perf c2c report --stdio
これにより、端末で
perf.data
ファイルが開きます。"Trace Event Information" テーブルで、LLC Misses to Remote Cache (HITM)の値が含まれる行を見つけます。
LLC Misses to Remote Cache (HITM) の行の値コラムの割合は、変更したキャッシュラインの NUMA ノード全体で発生していた LLC ミスの割合を表し、偽共有が発生したことを示す主要な指標です。
================================================= Trace Event Information ================================================= Total records : 329219 Locked Load/Store Operations : 14654 Load Operations : 69679 Loads - uncacheable : 0 Loads - IO : 0 Loads - Miss : 3972 Loads - no mapping : 0 Load Fill Buffer Hit : 11958 Load L1D hit : 17235 Load L2D hit : 21 Load LLC hit : 14219 Load Local HITM : 3402 Load Remote HITM : 12757 Load Remote HIT : 5295 Load Local DRAM : 976 Load Remote DRAM : 3246 Load MESI State Exclusive : 4222 Load MESI State Shared : 0 Load LLC Misses : 22274 LLC Misses to Local DRAM : 4.4% LLC Misses to Remote DRAM : 14.6% LLC Misses to Remote cache (HIT) : 23.8% LLC Misses to Remote cache (HITM) : 57.3% Store Operations : 259539 Store - uncacheable : 0 Store - no mapping : 11 Store L1D Hit : 256696 Store L1D Miss : 2832 No Page Map Rejects : 2376 Unable to parse data source : 1
Shared Data Cache Line Table の LLC Load Hitm フィールドの Rmt 列を確認します。
================================================= Shared Data Cache Line Table ================================================= # # Total Rmt ----- LLC Load Hitm ----- ---- Store Reference ---- --- Load Dram ---- LLC Total ----- Core Load Hit ----- -- LLC Load Hit -- # Index Cacheline records Hitm Total Lcl Rmt Total L1Hit L1Miss Lcl Rmt Ld Miss Loads FB L1 L2 Llc Rmt # ..... .................. ....... ....... ....... ....... ....... ....... ....... ....... ........ ........ ....... ....... ....... ....... ....... ........ ........ # 0 0x602180 149904 77.09% 12103 2269 9834 109504 109036 468 727 2657 13747 40400 5355 16154 0 2875 529 1 0x602100 12128 22.20% 3951 1119 2832 0 0 0 65 200 3749 12128 5096 108 0 2056 652 2 0xffff883ffb6a7e80 260 0.09% 15 3 12 161 161 0 1 1 15 99 25 50 0 6 1 3 0xffffffff81aec000 157 0.07% 9 0 9 1 0 1 0 7 20 156 50 59 0 27 4 4 0xffffffff81e3f540 179 0.06% 9 1 8 117 97 20 0 10 25 62 11 1 0 24 7
この表は、キャッシュ行ごとに検出されるリモート Hitm の量によって降順で並び替えられます。LLC Load Hitm セクションの Rmt 列の数値が大きい場合は、偽共有を示しており、偽共有アクティビティーをデバッグするには、それが発生したキャッシュラインをさらに検査する必要があります。