bash에서 intel_gpu_top의 출력을 변수로 가져오기

bash에서 intel_gpu_top의 출력을 변수로 가져오기

일반적으로 grep으로 문제를 해결할 수 있습니다.

sudo intel_gpu_top | grep xyz

하지만 이 경우 intel_gpu_top은 htop과 유사하며 지속적으로 실행됩니다.

Bash 스크립트에서 필요한 정보를 어떻게 추출합니까?

내 평균 iGPU 사용량을 알고 싶은데 이것이 이를 수행할 수 있는 유일한 도구인 것 같습니다. 결과를 파일로 출력하는 옵션이 있는데 sudo intel_gpu_top -o file.txt좀 이상하게 만들어졌고, 통계도 다르고, 이전 결과를 수동으로 덮어쓰는 대신 파일에 더 많은 콘텐츠를 추가해 파일에서 데이터를 추출하기 어렵게 만듭니다. 필요한 정보를 읽으십시오 (적어도 나 같은 bash 초보자의 경우)

편집하다:

이것이 출력이다sudo intel_gpu_top -o test.txt

Freq MHz      IRQ RC6 Power     IMC MiB/s           RCS/0           BCS/0           VCS/0          VECS/0
 req  act       /s   %     W     rd     wr       %  se  wa       %  se  wa       %  se  wa       %  se  wa
   0    0        0   0  0.00    170     48    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0
   6    6       12  99  0.01    545    134    0.81   0   0    0.00   0   0    0.00   0   0    0.00   0   0
   9    9       14  98  0.01    411     78    1.14   0   0    0.00   0   0    0.00   0   0    0.00   0   0
   5    5       10  99  0.01    436     74    0.72   0   0    0.00   0   0    0.00   0   0    0.00   0   0
  12   12       21  98  0.01    431    100    0.76   0   0    0.00   0   0    0.00   0   0    0.00   0   0
   3    3        8 100  0.00    391     52    0.16   0   0    0.00   0   0    0.00   0   0    0.00   0   0

sudo intel_gpu_top으로 시작하세요. htop 또는 top으로 표시된다는 점을 잊지 마세요.

intel-gpu-top -    9/   9 MHz;   98% RC6;  0.02 Watts;       17 irqs/s

      IMC reads:      732 MiB/s
     IMC writes:      247 MiB/s

          ENGINE      BUSY                                                                                             MI_SEMA MI_WAIT
     Render/3D/0    1.65% |█▍                                                                                        |      0%      0%
       Blitter/0    0.00% |                                                                                          |      0%      0%
         Video/0    0.00% |                                                                                          |      0%      0%
  VideoEnhance/0    0.00% |                                                                                          |      0%      0%

저는 Render/3D/0, Blitter/0, Video/0 및 VideoEnhance/0 값에 관심이 있습니다. 실제로 두 출력이 서로 어떻게 연관되어 있는지는 모르겠지만 아이디어가 있으면 알려주시기 바랍니다.

편집: 편집:"틱"마다 결과를 얻을 수 있어서 좋았습니다. sudo intel_gpu_top이 매초마다 자동으로 업데이트될 것이라고 생각했지만 틀렸을 수도 있습니다.

답변1

GPU 버전은 잘 모르지만 top제공된 출력으로 보면 sudo intel_gpu_top출력의 일부를 캡처한 것 같습니다 sudo intel_gpu_top -o outfile.

일대일 대응은 다음과 같습니다.

  • Render/3D/0<> RCS/0% 값
  • Blitter/0<> BCS/0% 값
  • Video/0<> VCS/0% 값
  • VideoEnhance/0<> VECS/0% 값

수집된 정보 이용조지 유로슨~의답변이 사이트에서 빌려보세요그 대답SO에 있고 올바르게 귀속됨외환:

  • "렌더링"(공간)은 일반적인 3D 작업의 공간 활용과 관련이 있는 것 같습니다.
  • "Blitter"(엔진)는 2D 작업(블리팅)의 하드웨어 가속을 담당하는 것으로 보입니다.
  • "VCS(비디오 명령 스트리밍)":

VCS 장치는 주로 운영 체제 드라이버와 MFD(Multi-Format Decoder) 엔진 [...](패킷 획득, 디코딩 및 디스패치) 간의 소프트웨어 프로그래밍 인터페이스 역할을 합니다.

바라보다이것더 많은 정보를 알고 싶다면

  • "비디오 향상 명령 스트림 단위(VECS)": 이 명령 스트림 단위는 추가/VCS 개선 사항그 안에

비디오 후처리를 또 다른 새로운 구성 요소인 VEBOX로 오프로드할 수 있습니다. VEBOX 엔진은 하드웨어 기반 비디오 후처리 및 지원되는 사용자 공간 코드에 사용됩니다.

값을 정기적으로 업데이트하려면 다음을 시도하십시오.

$ sudo intel_gpu_top -o - \
       | awk 'BEGIN {print "\tRender/3D/0 (%)","Blitter/0 (%)","Video/0 (%)","VideoEnhance/0 (%)\n"} 
              NR>=3 {printf "\t%11s%14s%12s%%19s\n" $4,$7,$10,$13}'

편집하다:나는 출력을 1로 제한하라는 OP 작성자의 요청에 응답하고 있습니다. 즉, intel_gpu_top업데이트된 출력을 주기적으로 표시하는 설계된 방식을 사용하지 않습니다.

이렇게 하려면 위의 코드 줄을 다음과 같이 변환할 수 있습니다.

timeout 1s sudo intel_gpu_top -s 1 -o - \
       | awk 'BEGIN {print "\tRender/3D/0 (%)","Blitter/0 (%)","Video/0 (%)","VideoEnhance/0 (%)\n"} 
              NR>=3 {printf "\t%11s%14s%12s%%19s\n" $4,$7,$10,$13}'
  • timeout 1s: 후속 명령이 1초 후에 시간 초과되도록 허용( 1s)
  • 플래그 intel_gpu_top및 파라미터 -s 1설정 출력은 1초에 1회 발생합니다.

관련 정보