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-13-debug-rpms
    Copy to Clipboard Toggle word wrap
  4. 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 레코드를 실행하고 출력을 저장합니다.

    • 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. 모든 OVS(Open vSwitch) 로그를 제공합니다. /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은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동