Fixed GHz Value for AMD Ryzen 9800X3D CPU

Hello,
Im trying to let my AMD Ryzen 9800X3D run on a fixed value as i did in the past with Intel i7-6700k with cpupower-service.conf but for some reason it don’t work.

/etc/default/cpupower-service.conf:

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2012, Sébastien Luttringer
# Copyright (C) 2024-2025, Francesco Poli <invernomuto@paranoici.org>

# Configuration file for cpupower.service systemd service unit
#
# Edit this file (uncommenting at least one of the options, depending on
# your preferences) and then enable cpupower.service, if you want cpupower
# to run at boot with these settings.

# --- CPU clock frequency ---

# Define CPU governor
# Valid governors: ondemand, performance, powersave, conservative, userspace
GOVERNOR='performance'

# Limit frequency range
# Valid suffixes: Hz, kHz (default), MHz, GHz, THz
MIN_FREQ="5.10GHz"
MAX_FREQ="5.10GHz"

# Set a specific frequency
# Requires userspace governor to be available.
# If this option is set, all the previous frequency options are ignored
#FREQ=

# --- CPU policy ---

# Set a register on supported Intel processore which allows software to convey
# its policy for the relative importance of performance versus energy savings to
# the processor. See man CPUPOWER-SET(1) for additional details
#PERF_BIAS=

# Set the Energy Performance Preference
# Available options can be read from
# /sys/devices/system/cpu/cpufreq/policy0/energy_performance_available_preferences
#EPP=

I also enabled the service after that change and restarted my PC:

$ systemctl status cpupower.service
● cpupower.service - Apply cpupower configuration
     Loaded: loaded (/usr/lib/systemd/system/cpupower.service; enabled; preset: disabled)
     Active: active (exited) since Sat 2026-10-03 19:03:56 CEST; 3min 32s ago
 Invocation: bec8d4334e8941229a00399b1719eec1
    Process: 765 ExecStart=/usr/lib/systemd/scripts/cpupower (code=exited, status=0/SUCCESS)
   Main PID: 765 (code=exited, status=0/SUCCESS)
   Mem peak: 2.7M
        CPU: 5ms

Okt 03 19:03:56 koboldx-x870e systemd[1]: Starting Apply cpupower configuration...
Okt 03 19:03:56 koboldx-x870e systemd[1]: Finished Apply cpupower configuration.

But i can’t see any difference with watch grep \"cpu MHz\" /proc/cpuinfo it still idling around 600Mhz on Desktop , here are some System Info:

$ cpupower frequency-info
analyzing CPU 1:
  driver: amd-pstate-epp
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  energy performance preference: performance
  hardware limits: 603 MHz - 5.27 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 603 MHz and 5.10 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 4.67 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
  amd-pstate limits:
    Highest Performance: 166. Maximum Frequency: 5.27 GHz.
    Nominal Performance: 148. Nominal Frequency: 4.70 GHz.
    Lowest Non-linear Performance: 19. Lowest Non-linear Frequency: 603 MHz.
    Lowest Performance: 19. Lowest Frequency: 600 MHz.
    Preferred Core Support: 1. Preferred Core Ranking: 191.
$ lscpu
Architecture:                x86_64
  CPU op-mode(s):            32-bit, 64-bit
  Address sizes:             48 bits physical, 48 bits virtual
  Byte Order:                Little Endian
CPU(s):                      16
  On-line CPU(s) list:       0-15
Vendor ID:                   AuthenticAMD
  Model name:                AMD Ryzen 7 9800X3D 8-Core Processor
    CPU family:              26
    Model:                   68
    Thread(s) per core:      2
    Core(s) per socket:      8
    Socket(s):               1
    Stepping:                0
    Microcode version:       0xb404035
    Frequency boost:         enabled
    CPU(s) scaling MHz:      26%
    CPU max MHz:             5271,6221
    CPU min MHz:             603,3790
    BogoMIPS:                9381,80
    Flags:                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx f
                             xsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good am
                             d_lbr_v2 nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq m
                             onitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cm
                             p_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit w
                             dt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpuid_fault cpb cat_l
                             3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase
                              tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx sm
                             ap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetb
                             v1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx_vnni avx51
                             2_bf16 clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save 
                             tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_
                             vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes 
                             vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid bus_lock_detect movdiri m
                             ovdir64b overflow_recov succor smca fsrm avx512_vp2intersect flush_l1d amd_lbr_pmc_fr
                             eeze
Virtualization features:     
  Virtualization:            AMD-V
Caches (sum of all):         
  L1d:                       384 KiB (8 instances)
  L1i:                       256 KiB (8 instances)
  L2:                        8 MiB (8 instances)
  L3:                        96 MiB (1 instance)
NUMA:                        
  NUMA node(s):              1
  NUMA node0 CPU(s):         0-15
Vulnerabilities:             
  Gather data sampling:      Not affected
  Ghostwrite:                Not affected
  Indirect target selection: Not affected
  Itlb multihit:             Not affected
  L1tf:                      Not affected
  Mds:                       Not affected
  Meltdown:                  Not affected
  Mmio stale data:           Not affected
  Old microcode:             Not affected
  Reg file data sampling:    Not affected
  Retbleed:                  Not affected
  Spec rstack overflow:      Mitigation; IBPB on VMEXIT only
  Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
  Spectre v1:                Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:                Mitigation; Enhanced / Automatic IBRS; IBPB conditional; STIBP always-on; PBRSB-eIBRS
                              Not affected; BHI Not affected
  Srbds:                     Not affected
  Tsa:                       Not affected
  Tsx async abort:           Not affected
  Vmscape:                   Mitigation; IBPB on VMEXIT

Hopefully someone has a idea what i did wrong, im a little bid lost now, adjusting my Intel i7 was way easier.

Edit: Okay after playing around with some values:

MIN_FREQ=“4.70GHz”
MAX_FREQ=“5.00GHz”

Showed clearly that Max Frequency is working and has a CPU Limiting impact when i run CPU heavy tasts.

But Min Frequency (which is the most important value for me) is fully ignored.
I also was in my Bios and fixed CPU Clock Ratio from Auto to 48 which still not allowed me min frequency but instead limiting my CPU to 4800Mhz on all cores. :expressionless_face:

I would try:

$ sudo cpupower frequency-set -g userspace
$ sudo cpupower frequency-set -f 5.1GHz

If it works you can adujust /etc/default/cpupower-service.conf accordingly.

userspace is not available

sudo cpupower frequency-set -g userspace

Setting cpu: 0
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

Then I fear this won’t work with cpupower.

Hmmm, is there another way/tool?

You could try to manually load the userspace governor module:

$ sudo modprobe cpufreq_userspace

To get it work it could be required to add amd_pstate=passive to the /etc/default/grub, this would be needed to be added in line starting with GRUB_CMDLINE_LINUX_DEFAULT=", afterwards don’t forget:

sudo update-grub

A reboot would be needed at this stage.

Also I believe that the Core Boost better should be disabled. If you agree you could disable it by:

$ echo 0 | sudo tee /sys/devices/system/cpu/cpufreq/boost

Im actually not 100% sure what that feature does, is that command persistend?
How can i re-enable it?

No. This only helps to identify the right procedure for the moment. After reboot it’s gone.

I believe amd-pstate must be bypassed first

I executed your command but no changes after i disable that boost.

Im wondering if i maybe should try to change my CPU with a Fixed Value with CoreCtrl / CoreCtrl · GitLab which was recommend to me in my GPU Topic anyways, so i could maybe solve with this Tool, both problems?

So userspace as governor had been accepted?

Had you made the change to /etc/default/grub?

No, i wasn’t sure that your command required userspace…

Im actually not sure, if i should go this way now or maybe try it first with CoreCtrl? Since it looks that need that tool anyways for adjusting my AMD GPU Fancurve.

It’s simple to revert it, why not trying?

Im a little bid worried, if i try 2 different routes now, if that doesn’t lead to more problems later :confused:

I’m coming back to you after my investigation with that other tool.
Thank you so far with your assisting, im really appreciate your help.

I also need a little PC tweaking break :slight_smile:

I report hopefully later again.

It might be helpful to know a bit more about your CPU and which scaling driver it is using. Please provide the output of:

inxi -Ca

I’m just wondering if you need to disable the amd-pstate scaling driver, which is built into the kernel. Note though that I’m far from being an expert on this, and I have never tried doing this on my own PC.

Try adding amd_pstate=disable to your kernel parameters & reboot.

Further reading:

amd_pstate=     [X86,EARLY]
                disable
                      Do not enable amd_pstate as the default
                      scaling driver for the supported processors
                passive
                      Use amd_pstate with passive mode as a scaling driver.
                      In this mode autonomous selection is disabled.
                      Driver requests a desired performance level and platform
                      tries to match the same performance level if it is
                      satisfied by guaranteed performance level.
                active
                      Use amd_pstate_epp driver instance as the scaling driver,
                      driver provides a hint to the hardware if software wants
                      to bias toward performance (0x0) or energy efficiency (0xff)
                      to the CPPC firmware. then CPPC power algorithm will
                      calculate the runtime workload and adjust the realtime cores
                      frequency.
                guided
                      Activate guided autonomous mode. Driver requests minimum and
                      maximum performance level and the platform autonomously
                      selects a performance level in this range and appropriate
                      to the current workload.

I just found time to report back and got it working, thanks for the info’s anyways but Wollie was mentionend already. I’m still glad about the additional details which you posted here.
:handshake:

I disabled cpupower-service.conf and gave CoreCTRL a chance, actually it didn’t worked and i had the same Mhz Clockspeeds, jumping from 600-5270.

I was first heavily dissapointed that it didn’t worked, and CoreCTRL showed me wrong sensor Data from my Mhz Speed also!
Which watch grep \"cpu MHz\" /proc/cpuinfo revealed… related to the screenshot.

And only gave me the 2 governor options, but after i put your command in Grub it instant worked after a reboot with CoreCTRL and i have now solid 5230-5270 Mhz.

Instead 2 governor options i have now 5 different governor options available, but CoreCTRL still has choosed Performance Governor, which lead to the ongoing High Mhz Values which i was looking for… FINALLY.

That’s said, userspace governor wasn’t there, they named:
Conservative, Ondemand, CPU Utilization, Performance, PowerSave

I guess this Grub Command would had worked probably with cpupower-service.conf (together with Performance Governor) also.

Thanks for the help :slight_smile:

I’m glad to see it working! :star_struck: