Skip to content

Gamemode can't apply OC but nvidia-settings can. #554

@asyync1024

Description

@asyync1024

Describe the bug
Gamemode fails to apply OC offsets even though nvidia-settings can both through CLI and GUI.
To Reproduce
Steps used to reproduce the behavior:

  1. Launch gamemode with this config file-
[general]
; The reaper thread will check every 5 seconds for exited clients, for config file changes, and for the CPU/iGPU power balance
reaper_freq=5

; The desired governor is used when entering GameMode instead of "performance"
desiredgov=performance
; The default governor is used when leaving GameMode instead of restoring the original value
;defaultgov=powersave

; The desired platform profile is used when entering GameMode instead of "performance"
desiredprof=performance
; The default platform profile is used when leaving GameMode instead of restoring the original value
;defaultgov=low-power

; The iGPU desired governor is used when the integrated GPU is under heavy load
igpu_desiredgov=powersave
; Threshold to use to decide when the integrated GPU is under heavy load.
; This is a ratio of iGPU Watts / CPU Watts which is used to determine when the
; integraged GPU is under heavy enough load to justify switching to
; igpu_desiredgov.  Set this to -1 to disable all iGPU checking and always
; use desiredgov for games.
igpu_power_threshold=0.3

; GameMode can change the scheduler policy to SCHED_ISO on kernels which support it (currently
; not supported by upstream kernels). Can be set to "auto", "on" or "off". "auto" will enable
; with 4 or more CPU cores. "on" will always enable. Defaults to "off".
softrealtime=off

; GameMode can renice game processes. You can put any value between 0 and 20 here, the value
; will be negated and applied as a nice value (0 means no change). Defaults to 0.
; To use this feature, the user must be added to the gamemode group (and then rebooted):
; sudo usermod -aG gamemode $(whoami)
renice=10

; By default, GameMode adjusts the iopriority of clients to BE/0, you can put any value
; between 0 and 7 here (with 0 being highest priority), or one of the special values
; "off" (to disable) or "reset" (to restore Linux default behavior based on CPU priority),
; currently, only the best-effort class is supported thus you cannot set it here
ioprio=0

; Sets whether gamemode will inhibit the screensaver when active
; Defaults to 1
inhibit_screensaver=1

; Sets whether gamemode will disable split lock mitigation when active
; Defaults to 1
disable_splitlock=1

[gpu]
; Here Be Dragons!
; Warning: Use these settings at your own risk
; Any damage to hardware incurred due to this feature is your responsibility and yours alone
; It is also highly recommended you try these settings out first manually to find the sweet spots

; Setting this to the keyphrase "accept-responsibility" will allow gamemode to apply GPU optimisations such as overclocks
apply_gpu_optimisations=accept-responsibility

; The DRM device number on the system (usually 0), ie. the number in /sys/class/drm/card0/
gpu_device=0

; Nvidia specific settings
; Requires the coolbits extension activated in nvidia-xconfig
; This corresponds to the desired GPUPowerMizerMode
; "Adaptive"=0 "Prefer Maximum Performance"=1 and "Auto"=2
; See NV_CTRL_GPU_POWER_MIZER_MODE and friends in https://github.com/NVIDIA/nvidia-settings/blob/master/src/libXNVCtrl/NVCtrl.h
nv_powermizer_mode=1
  1. Run gamemoderun glxgears.
  2. View output of "nvidia-settings -q all | grep GPUCurrentClockFreqsString"
  3. The clock speed does not change.
    Expected behavior
    The max clock speed increases according to the config.
    System Info:
  • OS and version: Arch Linux [Latest]
  • GameMode Version: 1.8.2-1
  • GPU: GT 740 [Proprietary 470xx driver]

Additional context
I had made a post about this on arch linux forums, got no response there but there is additional info present at there.

Output of "systemctl --user status gamemoded" while "gamemoderun glxgears" is running-

● gamemoded.service - gamemoded
     Loaded: loaded (/usr/lib/systemd/user/gamemoded.service; disabled; preset: enabled)
     Active: active (running) since Thu 2025-11-27 20:28:54 IST; 37min ago
 Invocation: e48f3ad0b92c4f3184741c9deb649f8e
   Main PID: 1303 (gamemoded)
     Status: "GameMode is now active."
      Tasks: 2 (limit: 4597)
     Memory: 54.6M (peak: 69.5M)
        CPU: 8.827s
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/gamemoded.service
             └─1303 /usr/bin/gamemoded

Nov 27 21:06:13 cosmos gamemoded[1303]:         org.freedesktop.DBus.Error.ServiceUnknown
Nov 27 21:06:13 cosmos gamemoded[1303]:         The name is not activatable
Nov 27 21:06:13 cosmos pkexec[9127]: pam_unix(polkit-1:session): session opened for user root(uid=0) by ak(uid=1000)
Nov 27 21:06:14 cosmos gamemoded[9135]: ERROR: Output didn't match expected format, couldn't discern highest perf level from nvidia-settings!
Nov 27 21:06:14 cosmos gamemoded[9135]: ERROR: Output:perf=0, nvclock=330, nvclockmin=330, nvclockmax=993, nvclockeditable=1, memclock=667, memclockmin=667, memclockmax=667, memclockeditable=1, memTransferRate=1>
Nov 27 21:06:14 cosmos gamemoded[9135]: ERROR: Failed to parse output for "[gpu:0]/GPUGraphicsClockOffset[-1]" output was ""!
Nov 27 21:06:14 cosmos gamemoded[1303]: ERROR: External process failed with exit code 1
Nov 27 21:06:14 cosmos gamemoded[1303]: ERROR: Output was:
Nov 27 21:06:14 cosmos gamemoded[1303]: ERROR: Failed to call gpuclockctl, could not get values!
Nov 27 21:06:14 cosmos pkexec[9146]: pam_unix(polkit-1:session): session opened for user root(uid=0) by ak(uid=1000)

Ask for more info if needed!

Thanks a lot!
LL

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions