「MangoHud」是一款專為Linux系統設計的開源軟體,能在螢幕上即時顯示系統CPU、GPU、RAM使用率,以及FPS(影格率,幀率)資訊。
如下圖,MangoHud顯示於遊戲螢幕左下角。
其功能類似Window上的MSI Afterburner或FPS Monitor軟體。
MangoHud顯示的資訊在玩Steam遊戲時很有用,方便監控Linux系統效能。
MangoHud既是輔助工具,也是測試工具,能夠用來統計遊戲的FPS穩定度。本文Ivon介紹如何設定MangoHud,並與各種遊戲搭配使用。
註: MangoHud僅適合監控「單一程式」的效能。如果你需要全域監控,並有浮動視窗一直顯示在所有視窗上方,那麼Ivon推薦你改用Conky。
1. 安裝MangoHud#
MangoHud由flightlessmango開發,他的Github有各大Linux發行版的安裝指示。
Steam OS 3.0已經內建MangoHud,無需安裝。
Ubuntu從官方套件庫安裝MangoHud:
sudo apt install mangohud
如果要顯示GPU用量,在Linux系統依照GPU品牌安裝對應的監控套件:
# Nvidia
sudo apt install nvtop
# Intel
sudo apt install intel-gpu-tools
# AMD
sudo apt install radeontop
2. 用Goverlay編輯MangoHud的版面配置#
Goverlay是另一名開發者Benjamim Gois製作的軟體,可用圖形界面編輯MangoHud的設定檔,修改版面配置。
參考Github說明,下載.AppImage,點二下執行。
Goverlay讀取的是MangoHud預設的設定檔目錄
~/.config/MangoHud/MangoHud.conf
如下圖,Goverlay可以自由調整要顯示的系統訊息,右邊面板會即時顯示預覽。
在
Position
處調整MangoHud顯示的位置。Size
設定MangoHud的整體大小。Performance頁面有一個FPS Limiter功能,用於限制遊戲執行時的最高FPS(遊戲中按F1切換),減少電腦耗電量,或者是防止遊戲幀數過高出現畫面撕裂情形。
在Extra頁面,可調整MangoHud為不同尺寸的面板。
Mininmal就是只顯示FPS
Compact多了CPU、RAM、溫度資訊
Complete就是完整顯示所有訊息,連系統都顯示
Graph,將各項資料以圖表顯示
調整完成後記得右下角按Save。
2. 在Steam遊戲使用MangoHud#
開啟Steam客戶端,在收藏庫對遊戲按右鍵 → 內容,將啟動選項改成mangohud %command%
啟動遊戲之後應該就會看到MangoHud了。
預設遊戲內開關MangoHud的快捷鍵是Shift+F12
。
3. MangoHud命令行用法#
MangoHud預設只能在使用Vulkan的應用程式執行,若程式使用OpenGL執行的話要額外加上參數。
Steam Proton轉譯的Windows遊戲會用DXVK將DirectX轉譯為Vulkan執行,所以應該不會有無法啟用MangoHud的問題。
這裡我們跑二個小程式作示範:vkcube是vulkan-tools
套件附屬的一個Vulakn小程式;glxgears則是mesa-utils
附屬的一個OpenGL小程式。
MangoHud,要顯示在Vulkan應用程式上的話就用以下語法:
mangohud vkcube
您會看到MangoHud顯示在視窗上。
如果執行的應用程式是OpenGL的話要加上--dlysm
:
mangohud --dlsym glxgears
才會看到MangoHud顯示在視窗上。
4. 用MangoHud測試遊戲平均FPS#
MangoHud可以紀錄一段時間內遊戲FPS的平均值,輸出成統計報告。繪製成圖表,或上傳結果到https://flightlessmango.com/games/user_benchmarks
。
於Goverlay的Performance頁面,點選資料夾路徑,設定輸出目錄
開啟遊戲,按下快捷鍵
Shift+F2
開始紀錄FPS,MangoHud面板會顯示綠燈再按一次
Shift+F2
停止。MangoHud會顯示FPS測試結果隨後對應目錄就會輸出FPS測試報告。
5. 執行Flatpak版MangoHud#
僅限Flatpak應用程式內部有效的MangoHud。Flatpak無法存取原生套件的MangoHud,所以要另外安裝。
安裝Flatpak
安裝MangoHud套件至一般使用者,分支需要與Steam的對上
flatpak install org.freedesktop.Platform.VulkanLayer.MangoHud
- 以Steam為例,若Steam是用Flatpak裝的,要先設定環境變數
MANGOHUD=1
,給Steam全部遊戲啟用MangoHud。有些程式只要設定這一步驟MangoHud就會跑出來,不需要再進一步設定。
flatpak override --user --env=MANGOHUD=1 com.valvesoftware.Steam
# 您也可以改為設定MANGOHUD=0,這樣它就不會全域啟用,而是僅加入mangohud指令的遊戲才啟動
- 再用此指令指定環境變數
MANGOHUD_CONFIGFILE=
,告訴Flatpak版的MangoHud設定檔所在位置
flatpak override --user --env=MANGOHUD_CONFIGFILE=/home/user/.config/MangoHud/MangoHud.conf com.valvesoftware.Steam
- 開放Steam讀取
~/.config/MangoHud/MangoHud.conf
的權限,這樣後面我們改的設定檔才會生效
flatpak override --user --filesystem=/home/user/.config/MangoHud/MangoHud.conf:ro com.valvesoftware.Steam
在Steam收藏庫對遊戲按右鍵 → 內容,將啟動選項改成
mangohud %command%
啟動遊戲,看MangoHud有沒有跑出來。
若是非Vulkan的Flatpak程式,例如,Flatpak版的Minetest使用OpenGL,要用MangoHud就得駭進去加上--dlysm
一樣得先給Minetest啟用MangoHud,再開放讀取MangoHud設定檔的權限
flatpak override --user --env=MANGOHUD=1 net.minetest.Minetest
flatpak override --user --filesystem=xdg-config/MangoHud:ro minetest.Minetest
再用以下指令啟動Minetest:
flatpak run --command="bash" net.minetest.Minetest /usr/lib/extensions/vulkan/MangoHud/bin/mangohud --dlsym /app/bin/minetest