第17章 偽共有の検出
偽共有は、対称型マルチプロセッシング (SMP) システムにおいて、あるプロセッサーコアが特定のキャッシュライン上のデータ項目を変更した際に、他のプロセッサーが、プロセッサー間では共有されていない別のデータ項目にアクセスするために、そのキャッシュラインを使用している場合に発生します。
この最初のデータ変更により、そのキャッシュラインを使用している他のプロセッサーは、変更されたデータ項目の更新版を必要としていなかったり、アクセス権すら持っていないにもかかわらず、自身のコピーを無効化し、更新版を要求せざるを得なくなります。
perf c2c コマンドを使用して、偽共有を検出できます。
17.1. perf c2c の目的 リンクのコピーリンクがクリップボードにコピーされました!
perf ツールの c2c サブコマンドは、Shared Data Cache-to-Cache (C2C) 分析を有効にします。perf c2c コマンドを使用して、キャッシュライン競合を検査し、true と false の両方の共有を検出できます。
キャッシュラインの競合は、対称型マルチプロセッシング (SMP) システムのプロセッサーコアが、他のプロセッサーによって使用されている同じキャッシュラインにあるデータオブジェクトを修正すると発生します。このキャッシュラインを使用する他のプロセッサーはすべて、コピーを無効にして更新されたものを要求します。これにより、パフォーマンスが低下する可能性があります。
perf c2c コマンドは、以下の情報を提供します。
- 競合が検出されたキャッシュライン
- データの読み取りおよび書き込みのプロセス
- 競合の原因となった命令
- 競合に関連する NUMA (Non-Uniform Memory Access) ノード