On Bazzite (and other Fedora immutable distros) with NVIDIA GPUs, the GPU may stay at the lowest performance level (P8 state) even during gaming, causing poor performance. This happens because the GPU doesn't automatically ramp up to higher power states under load.
This guide was tested with:
- OS: Bazzite 43 (Fedora Core 43 immutable)
- GPU: NVIDIA Quadro T2000 with Max-Q Design
- Driver: 580.95.05
- CUDA: 13.0
- Platform: Dell Precision 5550 i9-10885H, 64GB DDR4 RAM, Toshiba nVME 2.0 512GB drive
- Game(s): World of Warcraft WOTLK Warmane Edition, Gauntlet (Steam)
If you are using Lutris you may need to enable VKD3D and add the following environment details under System options:
- KEY
DXVK_ASYNCVALUE1 - KEY
DXVK_HUDVALUEfps - KEY
__GLX_VENDOR_LIBRARY_NAMEVALUEnvidia - KEY
__NV_PRIME_RENDER_OFFLOADVALUE1
Note: Future guide coming soon "How to setup Lutris correctly and configure various types of games and common issue resolutions"
The same principles apply to other NVIDIA GPUs on Bazzite/Fedora immutable systems.
Since you're using the bazzite-gnome-nvidia image, drivers should already be installed. Verify with:
nvidia-smiYou should see your GPU information displayed.
Find out what clock speeds your GPU supports:
nvidia-smi -q -d SUPPORTED_CLOCKSFor the Quadro T2000, the supported clocks are:
- Memory: 5001 MHz (max), 810 MHz (mid), 405 MHz (low)
- Graphics: 300-2100 MHz
nvidia-smi -q -d POWERThis shows your current and maximum power limits.
# Enable persistent performance mode
sudo nvidia-smi -pm 1
# Lock clocks to maximum (adjust values for your GPU)
sudo nvidia-smi -ac 5001,2100
# Verify the changes
nvidia-smiThe -ac flag syntax is: nvidia-smi -ac <memory_clock>,<graphics_clock>
Add these to your ~/.bashrc or ~/.bash_aliases:
# GPU performance aliases (adjust clock speeds for your GPU)
alias gpu-max='sudo nvidia-smi -pm 1 && sudo nvidia-smi -ac 5001,2100 && echo "GPU: Maximum Performance (2100MHz)"'
alias gpu-high='sudo nvidia-smi -pm 1 && sudo nvidia-smi -ac 5001,1800 && echo "GPU: High Performance (1800MHz)"'
alias gpu-conservative='sudo nvidia-smi -pm 1 && sudo nvidia-smi -ac 5001,1200 && echo "GPU: Conservative Performance (1200MHz)"'
alias gpu-auto='sudo nvidia-smi -pm 0 && sudo nvidia-smi -rac && echo "GPU: Auto clocks restored"'
alias gpu-status='nvidia-smi && nvidia-smi -q -d PERFORMANCE | grep -E "Performance State|Clocks"'
alias gpu-watch='watch -n 1 nvidia-smi'Reload your shell:
source ~/.bashrcNow you can easily switch performance modes:
gpu-max- Maximum performance for demanding gamesgpu-high- High performance, slightly lower clocksgpu-conservative- Balanced performance for lighter workloadsgpu-auto- Return to automatic clock managementgpu-status- Check current GPU statusgpu-watch- Monitor GPU in real-time
To automatically apply performance settings on boot, create a systemd service:
sudo nano /etc/systemd/system/nvidia-performance.service[Unit]
Description=NVIDIA GPU Performance Settings
After=nvidia-persistenced.service
[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi -pm 1
ExecStart=/usr/bin/nvidia-smi -ac 5001,2100
RemainAfterExit=yes
[Install]
WantedBy=multi-user.targetNote: Adjust the clock speeds in the ExecStart line to match your GPU's capabilities.
sudo systemctl daemon-reload
sudo systemctl enable nvidia-performance.service
sudo systemctl start nvidia-performance.servicesudo systemctl status nvidia-performance.serviceInstall if not already available:
rpm-ostree install nvtop
systemctl rebootThen run:
nvtopThis provides a real-time view of GPU usage, clocks, memory, and temperature.
# Single snapshot
nvidia-smi
# Continuous monitoring
watch -n 1 nvidia-smi
# Detailed performance info
nvidia-smi -q -d PERFORMANCE-
Check if performance mode is enabled:
nvidia-smi -q -d PERFORMANCE | grep "Performance Mode"
-
Verify clocks are locked:
nvidia-smi -q -d CLOCKS
-
Check for thermal throttling:
nvidia-smi -q -d TEMPERATURE
If using the systemd service and settings don't persist:
-
Check service status:
sudo systemctl status nvidia-performance.service
-
Check service logs:
journalctl -u nvidia-performance.service
-
Ensure the service is enabled:
sudo systemctl is-enabled nvidia-performance.service
If you get permission errors when using the aliases, you may need to configure passwordless sudo for nvidia-smi commands. Edit sudoers:
sudo visudoAdd this line (replace yourusername with your actual username):
yourusername ALL=(ALL) NOPASSWD: /usr/bin/nvidia-smi-pm 1- Enable persistent mode (keeps driver loaded, reduces latency)-pm 0- Disable persistent mode (auto management)-ac <mem>,<gpu>- Lock application clocks to specified MHz-rac- Reset application clocks to default (auto)-pl <watts>- Set power limit in watts-q -d <section>- Query detailed information for a specific section
If you're on a laptop:
- Gaming on AC power: Use
gpu-max - Light work on battery: Use
gpu-autoorgpu-conservative - Maximum battery life: Use
gpu-autoand let the GPU idle at P8 state
Locked clocks will drain battery faster even when idle, so remember to run gpu-auto when you're done gaming.
If you found this guide helpful, consider sharing it with the Bazzite/Universal Blue community on their Discord or GitHub discussions!
Last Updated: November 2025
Tested On: Bazzite 43 (Fedora Core 43), NVIDIA Driver 580.95.05