次の方法で共有


スピンロック データの評価

スピンロック レポートには、スピンロックに関する次の情報が表示されます。

  • サンプル レートを取得する
  • 競合サンプル レート
  • スピンしきい値
  • CPU の数
  • CPU 速度 (MHz)
  • トレース長さ (ナノ秒)
  • トレース長さ (サイクル数)

スピンロック レポートのセクション

レポートの次のセクションでは、プロファイル期間中のスピンロックの使用状況を示します。

個々のスピンロック

各スピンロックが個別に表示されます。 スピンロックを並べ替えて、"最も新しい" スピンロックを最初に表示します。 たいていは、上位のスピンロックを少し調べるだけで、スピンロックのボトルネックを見つけることが可能です。

スピンロックごとに以下の情報が表示されます。

  • ロックの種類
  • ロックのカーネル アドレス
  • ロックのシンボル (動的に作成されたスピンロックにはシンボルがありません)

概要レポート セクション

概要レポートには、次の情報が含まれます。

  • ロック取得に費やされた CPU 時間のパーセント値
  • ロック競合に費やされた CPU 時間のパーセント値
  • ロックの取得率
  • 衝突率
  • スピン レート
  • 競合率 (サンプリング後と正規化後の両方)

レポートの最後の 2 つのセクションは、割り込みとリリース関数によってスキップされたイベントです。

割り込みによりスキップされたイベント

スピンロックを保持している間に割り込みが発生する可能性があります。 これが発生すると、割り込み処理時間はスピンロック保持時間の中に含まれ、スピンロック時間は異常に長く表示されます。 スピンロックを保持する時間を計算しているとき、割り込みが処理される間に保持されるスピンロック イベントは Xperf に含まれません。 Events skipped due to interrupts 行には、計算に含まれていなかったイベントの数が表示されます。 この数値は、通常は非常に小さくなります。

リリース関数

スピンロックをさまざまなコード パスから取得またはリリースできます。 スピンロックのリリース関数の一覧が、レポートの最後に表示されます。 この一覧は、スピンロックの保持時間で並べ替えされます。 特定のリリース関数 (取得や競合など) に関する追加情報も表示されます。

次の例は、スピンロック データの概要を取得する方法を示しています。

xperf -i example.etl -symbols -o example.txt -a spinlock -summary

次の例では、返されるレコードの数をアクティブな上位 5 つのスピンロックに制限する方法を示します。

xperf -i example.etl -symbols -o example.txt -a spinlock -summary -counts 5

spinlock