MangoHud — компактный оверлей для Linux, который показывает частоту кадров, время генерации кадра, загрузку процессора и видеокарты, температуры, частоты, энергопотребление и занятую видеопамять прямо поверх игры. Он не меняет файлы игры и не требует прав root: для Vulkan подключается как слой, для OpenGL — через предзагрузку библиотеки. Ниже — установка, запуск в Steam и вне его, настройка конфигурации, запись логов и разбор типичных сбоев.
Как устроен оверлей
В Vulkan-играх MangoHud регистрируется как неявный слой загрузчика. Игра создаёт цепочку обмена с окном, а MangoHud добавляет в неё собственный проход отрисовки. В OpenGL-приложениях библиотека внедряется через LD_PRELOAD и перехватывает функции обмена буферов. Поэтому оверлей виден только внутри окна игры и не появляется на рабочем столе.
На Wayland оверлей рисуется внутри клиентского окна игры, поэтому не конфликтует с композитором рабочего стола и обычно работает и в оконном, и в полноэкранном режиме.
Накладные расходы невелики, но измеримы. График времени кадра и показ каждого ядра процессора стоят дороже, чем строка с FPS. Для честного сравнения включайте один и тот же набор метрик, фиксируйте разрешение, настройки графики и сцену. Средний FPS без 1% low легко вводит в заблуждение: рывки заметны именно по редким медленным кадрам.
Установка
В большинстве дистрибутивов пакет уже есть в официальном репозитории. Вместе с ним удобно поставить графический редактор конфигурации Goverlay.
sudo apt install mangohud goverlay
sudo dnf install mangohud goverlay
sudo pacman -S mangohud lib32-mangohud goverlay
mangohud --version
Для 32-битных игр в Arch Linux нужен отдельный пакет lib32-mangohud, в Debian — mangohud:i386. Проверьте, что установлен загрузчик Vulkan: без него слой просто не активируется. Для Flatpak-приложений оверлей ставится расширением в то же окружение, где работает игра.
Запуск в Steam и вне Steam
Самый распространённый способ — добавить обёртку в параметры запуска игры. Строка действует только для выбранной игры и не затрагивает остальные приложения.
mangohud %command%
MANGOHUD=1 %command%
env MANGOHUD_CONFIG=fps,gpu_temp,cpu_temp mangohud %command%
gamemoderun mangohud %command%
Порядок обёрток важен: сначала GameMode, затем MangoHud, затем команда игры. Для нативных игр вне Steam достаточно запустить mangohud ./game из терминала. Если приложение само переопределяет LD_PRELOAD, помогает переменная MANGOHUD_DLSYM=1, которая включает перехват через dlsym. Отключить его можно значением 0.
Файл конфигурации
Глобальные настройки хранятся в ~/.config/MangoHud/MangoHud.conf. Создайте каталог и откройте файл в любом редакторе. Строки без значения включают соответствующую метрику, строки вида параметр=значение задают поведение.
mkdir -p ~/.config/MangoHud
cp /usr/share/doc/mangohud/MangoHud.conf.example ~/.config/MangoHud/MangoHud.conf
nano ~/.config/MangoHud/MangoHud.conf
mangohud --version
Рабочий пример для повседневной игры выглядит так:
fps
frame_timing
gpu_stats
gpu_temp
gpu_power
cpu_stats
cpu_temp
core_load
ram
vram
wine
vulkan_driver
font_size=18
background_alpha=0.45
position=top-left
output_folder=/home/user/mangohud-logs
autostart_log=5
log_duration=60
log_interval=100
Метрика wine показывает версию Proton, vulkan_driver — используемый драйвер, vram — занятую видеопамять. Параметр position принимает значения top-left, top-right, bottom-left, bottom-right, top-center и bottom-center. Клавиши управления по умолчанию: Shift+F12 скрывает и показывает оверлей, Shift+F2 запускает и останавливает запись лога, Shift+F4 перечитывает конфигурацию.
Для отдельной игры удобно держать персональный файл. MangoHud ищет ~/.config/MangoHud/имя_исполняемого_файла.conf, а для Proton-игр — wine-имя.conf без расширения exe. Можно передать путь явно через MANGOHUD_CONFIGFILE. Переменная MANGOHUD_CONFIG имеет приоритет над файлом; чтобы она не отменяла остальные настройки, добавьте в начало read_cfg.
Goverlay и быстрая проверка
Goverlay собирает те же параметры в окне с галочками и записывает готовый конфиг. Он удобен, когда нужно подобрать положение и размер шрифта, но не заменяет понимание параметров. После сохранения запустите игру и убедитесь, что выбранные строки действительно отображаются. Если оверлей выглядит мелким на 4K-мониторе, увеличьте font_size, а не масштаб интерфейса.
Отдельного упоминания заслуживает ограничение кадров. Параметр fps_limit принимает одно или несколько значений через запятую, ноль означает отсутствие лимита. Комбинация лимита и vsync помогает снизить нагрев и энергопотребление ноутбука, не отключая вертикальную синхронизацию полностью.
Логи и разбор производительности
Для записи логов обязательно задайте output_folder: без него файл не создастся. Запись можно включить автоматически через autostart_log, ограничить по времени через log_duration и задать частоту точек через log_interval в миллисекундах.
MANGOHUD_CONFIGFILE=/home/user/mangohud.conf mangohud ./game
ls -lh /home/user/mangohud-logs
head -n 3 /home/user/mangohud-logs/*.csv
awk -F, 'NR>1 {sum+=$1; n++} END {print sum/n}' /home/user/mangohud-logs/*.csv
Файл получается в CSV и содержит время кадра, загрузку, температуры и другие столбцы. Простую статистику можно посчитать в awk, а для графиков удобнее mangoplot из состава MangoHud. Перед серией замеров закройте фоновые программы, отключите запись экрана и дайте игре прогреться две-три минуты. Первые секунды после загрузки почти всегда содержат всплески компиляции шейдеров, которые портят средние значения. Сравнивайте логи, снятые на одной и той же сцене и с одинаковыми настройками, иначе выводы будут случайными.
Диагностика
- Оверлей не появляется в Vulkan-игре: проверьте vulkaninfo —summary и наличие файла слоя в /usr/share/vulkan/implicit_layer.d.
- Не работает в OpenGL: попробуйте MANGOHUD_DLSYM=1 и убедитесь, что игра не перезаписывает LD_PRELOAD.
- Нет температур: драйвер не отдаёт датчики. Для NVIDIA нужен проприетарный драйвер и NVML, для AMD — amdgpu с hwmon.
- 32-битная игра без оверлея: установите lib32-пакет или mangohud:i386.
- Конфликт с другими оверлеями: отключите оверлей Steam, Discord и запись OBS поверх игры, затем проверьте снова.
Если оверлей мешает записи экрана, включите его только на время замера. Для проверки конфигурации удобно запустить mangohud vkcube: короткий тест покажет, что слой работает, ещё до запуска тяжёлой игры.
Чек-лист
- Пакет и 32-битные библиотеки установлены, версия выводится.
- Параметры запуска содержат mangohud перед %command%.
- Конфиг лежит в ~/.config/MangoHud и не содержит опечаток.
- Для логов задан output_folder и понятная длительность записи.
- Замеры повторяются на одной сцене и одинаковых настройках.
Итог
MangoHud даёт точную картину того, что происходит с игрой: где начинаются провалы, упирается ли система в процессор или видеокарту, не перегревается ли устройство. Настройка занимает несколько минут, а привычка снимать логи превращает субъективные ощущения в измеримые данные. Главное — не включать все метрики сразу и сравнивать замеры в одинаковых условиях.