CPU Frequency scaling for DS918+

Recommended Posts

Hi All!


i read all comments, and then try to solve my same problem, on my server XPEnology DS918+ (Asrock H110M ITX Mobo, i3-6100 CPU, 2 cores+ 2HT, 16GB DDR4 with 6.2.3-25426, today the last update) high cpu freq running. I do anything, but my cpu runs at highest freqency, on 3700. How can i do that  process?  Thanks!

Edited by Rick4
Link to post
Share on other sites
  • 2 months later...
On 10/19/2020 at 7:52 AM, Demitsuri said:


I've tested performance of my J4105, DS918+, 1.04b. Without script.

Geeknech 5 + docker.

docker run --rm davidsarkany/geekbench && docker rmi davidsarkany/geekbench
My result is https://browser.geekbench.com/v5/cpu/4246087

 It corresponds to Turbo clock 2500MHz, but DSM reports 1501MHz.


1500MHz - base.

1501MHz - active burst.



Older kernels don't always report turbo speeds properly. BSD works in some of the same way.


You sometimes see at least 3 frequencies:

Base: ex 800mhz

Peak: ex 2500mhz

Turbo: ex 2501 


You could have many frequencies between 800 and 2500mhz, but 2501 would signify that the cpu is in turbo mode.

Link to post
Share on other sites

I am unable to get this to work on a 10th gen i7-10700. I get the task to run but it only puts the cpu at full turbo speed.


With these newer cpus, there are 4-5 different settings in bios regarding speedstep, speedshift etc. Do I need to disable anything?

Link to post
Share on other sites
  • 2 weeks later...



thank you for such scripts it runs almost fine on my configuration (I3-4160, 8GB RAM, DSM 6.2.3 u3).

My CPU supports 3 governors - userspace, performance, powersafe.


Anyway I also realized, that for some unknown reason, the governor is time to time (usually at night when there is no load (?)) switched from "userspace" updated by the script to "performance" and then the running main function fails on the error already described in this forum (/usr/local/bin/scaler.sh: line 57: echo: write error: Invalid argument):

echo "$minfreq" > /sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_setspeed

Assuming that when the governor is set to different state from userspace it is not possible to externally update the frequency.


So in order to avoid the problem I just copied the the part of code checking and updating the governor in to the beginning of the main function:

# Set correct cpufreq governor to allow user defined frequency scaling
governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
if [ "$governor" != "userspace" ]; then
  for i in $(seq 0 "${cpucorecount}")
      echo userspace > /sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_governor


So far I have no idea what and why the governor gets modified and especially to the "performance".


But at least such small modification prevents the script from failing.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.