Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.2.2.2. btt を使った blktrace 出力の分析

btt ユーティリティーは blktrace パッケージの一部として提供されます。blktrace の出力を分析して I/O スタックの各エリアでデータが消費する時間を表示するため I/O サブシステム内の障害を発見しやすくなります。
blktrace メカニズムによって追跡され、btt によって分析される重要なイベントの一部は次のとおりです。
  • I/O イベント (Q) のキュー
  • ドライバーイベント (D) への I/O のディスパッチ
  • I/O イベントの完了 (C)
イベントの組み合わせを検証して、I/O のパフォーマンスに関与する要因を含むまたは除外することができます。
各 I/O デバイスのサブポーションのタイミングを検査するには、I/O デバイスのキャプチャーした blktrace イベント間のタイミングを確認します。たとえば、以下のコマンドは、スケジューラー、ドライバー、およびハードウェアレイヤーが含まれるカーネル I/O スタックの下部で費やされた合計時間 (Q2C) を待機期間の平均として報告します。
$ iostat -x

[...]
Device:         await r_await w_await
vda             16.75    0.97  162.05
dm-0            30.18    1.13  223.45
dm-1             0.14    0.14    0.00
[...]
デバイスがリクエストに対応するのに長時間かかる場合 (D2C)、デバイスが過負荷の状態であったり、デバイスの送られたワークロードが最適ではないことがあります。ストレージデバイスがディスパッチされる前 (Q2G) に、ブロック I/O が長時間キューに置かれた場合、使用中のストレージは I/O の負荷に対応できないことを示す場合があります。たとえば、LUN のキューが満杯の状態になり、I/O をストレージデバイスにディスパッチできないことがあります。
前後の I/O のタイミングを調べると、ボトルネックの状況が分かります。たとえば、ブロックレイヤーに送信されたリクエストの間隔 (Q2Q) がリクエストがブロックレイヤーで費やす時間の合計 (Q2C) よりも大きいと btt が示す場合、I/O リクエストの間にアイドル時間があり、I/O サブシステムがパフォーマンスの問題に関係しない可能性があることを意味します。
I/O 前後の Q2C 値を比較すると、ストレージサービス時間の変動量を示すことができます。値は以下のいずれかになります。
  • 小さい範囲ではほぼ一貫している。
  • 分布範囲では変動が大きく、ストレージデバイス側での輻輳問題の可能性がある。
このツールの詳細は、btt(1) の man ページを参照してください。
$ man btt