A.3. Systemtap フライトレコーダーを使用して継続的にトレースデータを取得する

qemu-kvm パッケージで提供される systemtap initscript を使用し、QEMU トレースデータを常時取得できます。このパッケージは、実行中のすべてのゲスト仮想マシンのトレースを実行し、結果をホスト上の固定サイズバッファーに保存するために System Tap のフライトレコーダーを使用します。古いトレースエントリーは、バッファーが一杯になると新規エントリーによって上書きされます。

手順A.1 systemtap の設定および実行

  1. パッケージをインストールします。

    以下のコマンドを実行して systemtap-initscript パッケージをインストールします。
    # yum install systemtap-initscript
  2. 設定ファイルをコピーします。

    以下のコマンドを実行して systemtap スクリプトおよび設定ファイルを systemtap ディレクトリーにコピーします。
    # cp /usr/share/qemu-kvm/systemtap/script.d/qemu_kvm.stp /etc/systemtap/script.d/
    # cp /usr/share/qemu-kvm/systemtap/conf.d/qemu_kvm.conf /etc/systemtap/conf.d/
    有効にするトレースイベントのセットが qemu_kvm.stp で提供されます。この SystemTap スクリプトは、/usr/share/systemtap/tapset/qemu-kvm-simpletrace.stp で提供されるトレースイベントの追加または削除を行えるようにカスタマイズできます。
    SystemTap のカスタマイズは qemu_kvm.conf に対して行われ、フライトレコーダーのバッファーサイズやトレースをメモリーのみに保存するか、またはディスクにも保存するかどうかの制御が行われます。
  3. サービスを起動します。

    以下のコマンドを実行して systemtap サービスを起動します。
    # systemctl start systemtap qemu_kvm
  4. 起動時に実行するよう systemtap を有効にします。

    以下のコマンドを実行して systemtap サービスを起動時に実行できるようにします。
    # systemctl enable systemtap qemu_kvm
  5. サービスが実行中であることを確認します。

    以下のコマンドを実行してサービスが機能していることを確認します。
    # systemctl status systemtap qemu_kvm
    qemu_kvm is running...

手順A.2 トレースバッファーの検査

  1. トレースバッファーのダンプファイルを作成します。

    以下のコマンドを実行して、trace.log というバッファーダンプファイルを作成し、これを tmp ディレクトリーに置きます。
    # staprun -A qemu_kvm >/tmp/trace.log
    ファイル名と場所を他の名前に変更することができます。
  2. サービスを起動します。

    直前のステップでサービスを停止したので、以下のコマンドを実行してサービスを再度起動します。
    # systemctl start systemtap qemu_kvm
  3. トレース内容を読み取り可能な形式に変換します。

    トレースファイルの内容を読みやすい形式に変換するには、以下のコマンドを実行します。
    # /usr/share/qemu-kvm/simpletrace.py --no-header /usr/share/qemu-kvm/trace-events /tmp/trace.log

注記

以下の考慮点および制限に留意してください。
  • systemtap サービスはデフォルトで無効にされます。
  • サービスが有効にされる際に小規模なパフォーマンスペナルティーが発生しますが、これは全体的にどのイベントが有効にされているかによって変わります。
  • /usr/share/doc/qemu-kvm-*/README.systemtap には README ファイルがあります。