從 intel_gpu_top 獲取輸出作為 bash 中的變數
通常使用 grep 就可以了
sudo intel_gpu_top | grep xyz
但在這種情況下,intel_gpu_top 就像 htop 並不斷執行。
我將如何在 bash 腳本中提取所需的資訊?
我想得到我的平均 iGPU 使用率,這似乎是唯一可以做到這一點的工具。雖然可以選擇將結果輸出到文件中,
sudo intel_gpu_top -o file.txt
但製作起來很奇怪,它具有不同的統計資訊,並且不會手動覆蓋舊結果,而是向文件中添加更多內容,從而難以從該文件中讀取所需的資訊(至少對於像我這樣的 bash noobie)編輯:
這是來自的輸出
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 都會自我更新,但我可能是錯的
我對那個 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
% 值使用從GeorgeUdosen在本網站上的答案中獲得的資訊,從 SO 上的答案中藉用,並正確歸因於FX:
- “渲染”(空間)似乎與正常 3D 操作的空間使用有關。
- “Blitter”(引擎)似乎負責 2D 操作(blitting)的硬體加速。
- “影片命令流媒體 (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}'
**編輯:**我在這裡響應 OP 的作者要求將輸出限制為 1,即不使用
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
: 允許後續命令在一秒後超時 (1s
)intel_gpu_top
標誌和參數設置-s 1
輸出每秒發生一次。