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の値に興味があります。実際、2つの出力が互いにどのように関連付けられているかはわかりませんが、アイデアがある場合はお知らせください。

編集:編集:「ティック」ごとに結果が得られてよかったです。 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)エンジン[...](パケット取得、デコード、ディスパッチ)との間のソフトウェアプログラミングインタフェースとして機能します。

バラよりこれより多くの情報を知りたい場合

  • 「ビデオ拡張コマンドストリームユニット(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回発生します。

おすすめ記事