第12章 perf を使用して OVS DPDK PMD CPU 使用率のトラブルシューティングを行い、トラブルシューティングデータを収集して送信します


  1. 前提条件、このセクションの手順を使用して、トラブルシューティングツールをインストールします。
  2. コンピュートノードに perf をインストールします。

    yum install perf -y
    Copy to Clipboard Toggle word wrap
  3. Open vSwitch デバッグ RPM をインストールします。

    subscription-manager repos --enable=rhel-7-server-openstack-10-debug-rpms
    Copy to Clipboard Toggle word wrap
  4. sysstat をインストールします (pidstat コマンドに必要):

    yum install sysstat -y
    Copy to Clipboard Toggle word wrap

12.1. 診断

このセクションの手順を使用して、データのトラブルシューティングと収集を行います。

12.1.1. PMD スレッド

  1. PMD スレッドの場所を決定します。

    IFS=$'\n' ; for l in $(ps -T -p `pidof ovs-vswitchd` | grep pmd);do PID=`echo $l | awk '{print $2}'`; PMD=`echo $l | awk
    '{print $NF}'` ; PCPU=`taskset -c -p $PID | awk '{print $NF}'` ; echo "$PMD with PID $PID in on pCPU $PCPU"; done
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    [root@overcloud-compute-1 ~]# IFS=$'\n' ; for l in $(ps -T -p `pidof ovs-vswitchd` | grep pmd);do PID=`echo $l | awk
    '{print $2}'`; PMD=`echo $l | awk '{print $NF}'` ; PCPU=`taskset -c -p $PID | awk '{print $NF}'` ; echo "$PMD with PID $PID in on pCPU
    $PCPU"; done
    pmd545 with PID 412314 in on pCPU 2
    pmd555 with PID 412315 in on pCPU 4
    pmd550 with PID 412316 in on pCPU 6
    pmd551 with PID 412317 in on pCPU 8
    pmd553 with PID 412318 in on pCPU 22
    pmd554 with PID 412319 in on pCPU 24
    pmd549 with PID 412320 in on pCPU 26
    pmd556 with PID 412321 in on pCPU 28
    pmd546 with PID 412322 in on pCPU 3
    pmd548 with PID 412323 in on pCPU 5
    pmd547 with PID 412324 in on pCPU 23
    pmd552 with PID 412325 in on pCPU 25
    Copy to Clipboard Toggle word wrap
  2. 問題を再現しながら、perf レコードと perf レポートを実行し、出力を保存します。

    • スクリプト gather_perf_data_a.sh を作成します。

      cat<<'EOF'>>gather_perf_data_a.sh
      #!/bin/bash -x
      IFS=$'\n' ;
      dir_name=/tmp/perf_record_a
      mkdir ${dir_name}
      rm -f ${dir_name}/*
      
      for l in $(ps -T -p `pidof ovs-vswitchd` | grep pmd);do PID=`echo $l | awk '{print $2}'`; PMD=`echo $l | awk '{print $NF}'` ; PCPU=`taskset -c -p $PID | awk '{print $NF}'` ; echo "$PMD with PID $PID in on pCPU $PCPU"; done > ${dir_name}/pmds.txt
      
      for l in $(ps -T -p `pidof ovs-vswitchd` | grep pmd);do
        PID=`echo $l | awk '{print $2}'`;
        PMD=`echo $l | awk '{print $NF}'` ;
        PCPU=`taskset -c -p $PID | awk '{print $NF}'` ;
        echo "$PMD with PID $PID in on pCPU $PCPU";
        date
        perf record -C $PCPU -g -o perf_record_-g_$PCPU sleep 60 &
      done
      
      sleep 80
      
      for l in $(ps -T -p `pidof ovs-vswitchd` | grep pmd);do
        PID=`echo $l | awk '{print $2}'`;
        PMD=`echo $l | awk '{print $NF}'` ;
        PCPU=`taskset -c -p $PID | awk '{print $NF}'` ;
        echo "$PMD with PID $PID in on pCPU $PCPU";
        date
        perf record -C $PCPU -o perf_record_$PCPU sleep 60 &
      done
      
      sleep 80
      
      for f in perf_record_-g_*;do
        perf report -g -i $f | cat > ${dir_name}/perf_report_$f.txt ;
        rm -f $f
      done
      
      for f in perf_record_*;do
        perf report -i $f | cat > ${dir_name}/perf_report_$f.txt ;
        rm -f $f
      done
      
      archive_name="${dir_name}_`hostname`_`date '+%F_%H%m%S'`.tar.gz"
      tar -czf $archive_name ${dir_name}
      echo "Archived all data in archive ${archive_name}"
      EOF
      Copy to Clipboard Toggle word wrap
    • スクリプトを実行します。

      chmod +x gather_perf_data_a.sh
      ./gather_perf_data_a.sh
      Copy to Clipboard Toggle word wrap

レポートは、perf report -i ${archive_name} を使用して読み取ることができます。これが Red Hat サポートで開かれたケースの場合は、結果の tar アーカイブをケースに添付します。

12.1.2. 追加データ

  1. スクリプト gather_perf_data_b.sh を作成して、追加のデータを収集します。

    cat<<'EOF'>>gather_perf_data_b.sh
    #!/bin/bash -x
    dir_name=/tmp/perf_record_b
    mkdir ${dir_name}
    rm -f ${dir_name}/*
    
    date > ${dir_name}/pidstat1.txt
    pidstat -u -t -p `pidof ovs-vswitchd`,`pidof ovsdb-server` 5 12 >> ${dir_name}/pidstat1.txt &
    perf record -p `pidof ovs-vswitchd` -g --call-graph dwarf sleep 60
    
    sleep 20
    
    date > ${dir_name}/pidstat2.txt
    pidstat -u -t -p `pidof ovs-vswitchd`,`pidof ovsdb-server` 1 60 >> ${dir_name}/pidstat2.txt
    
    mv perf.data perf.data_openvswitch
    
    perf script -F tid -i perf.data_openvswitch | sort -u | grep -o '[0-9]*' | xargs -n1 -I{} perf report -i perf.data_openvswitch --no-children --percentage relative --stdio --tid {} -g none > ${dir_name}/perf_reports.txt
    perf script -F tid -i perf.data_openvswitch | sort -u | grep -o '[0-9]*' | xargs -n1 -I{} perf report -i perf.data_openvswitch --no-children --percentage relative --stdio --tid {}  > ${dir_name}/perf_reports_callgraph.txt
    
    rm -f perf.data_openvswitch
    
    archive_name="${dir_name}_`hostname`_`date '+%F_%H%m%S'`.tar.gz"
    tar -czf $archive_name ${dir_name}
    echo "Archived all data in archive ${archive_name}"
    EOF
    Copy to Clipboard Toggle word wrap
  2. スクリプトを実行します。

    chmod +x gather_perf_data_b.sh
    ./gather_perf_data_b.sh
    Copy to Clipboard Toggle word wrap
    注記

    十分なディスク容量があることを確認してください。perf.data ファイルは、数ギガバイトのディスク領域を占める可能性があります。

これが Red Hat サポートチケットの場合は、結果の tar アーカイブをケースに添付します。

12.1.3. Open vSwitch ログ

  1. すべての Open vSwitch (OVS) ログを提供します。/var に十分なディスク容量があることを確認してください。df -h を使用して/var の空きディスク容量を決定し、du -sh /var/log/openvswitch を使用して OVS ログの合計サイズを決定します。

    tar -cvzf /var/openvswitch_`hostname`_`date +"%F_%H%M%S"`.tar.gz /var/log/openvswitch
    Copy to Clipboard Toggle word wrap
  2. 結果のファイル (例: /var/openvswitch_overcloud-compute-0_2018-02-27_153713.tar.gz) を分析用のサポートケースに添付します。
  3. sosreport を生成して提供します。/var に十分なディスク容量があることを確認してください。df -h を使用して、/var の空きディスク容量を決定します。

    sosreport --batch --all-logs
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat