Are you getting enough from your N100 SBC?
28 August 2024Did you buy yourself a cute little CWWK Crazy? Trying to use it as a server? Do you get the feeling that it’s not quite as powerful as you would expect from the benchmark figures? Well the N100 is an awesome CPU …. but there’s a good reason you’re not getting as much CPU power as benchmarks suggest you should!
Let me show you why… First install powercap-utils. That’ll help us understand and modify the CPU power settings under Linux:
apt install powercap-utils -y
Now let’s see what the default power limits are set to.
root@prox:~# powercap-info -p intel-rapl
enabled: 1
Zone 0
name: package-0
enabled: 1
max_energy_range_uj: 262143328850
energy_uj: 429781126
Constraint 0
name: long_term
power_limit_uw: 6000000
time_window_us: 27983872
max_power_uw: 6000000
...
From the Zome 0 Constraint 0 you can see that the long term power limit is set to 6W.
Now let’s see what happens to the CPU under sustained load. On my Proxmox setup that’s already running some containers that are reasonably CPU heavy (so already up against the power limit) a 7z benchmark gives us this:
Intel(R) N100 (B06E0)
CPU Freq: - - - - - - - - -
RAM size: 31842 MB, # CPU hardware threads: 4
RAM usage: 882 MB, # Benchmark threads: 4
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 2945 177 1621 2866 | 33225 210 1349 2835
23: 2461 167 1498 2508 | 32143 206 1351 2781
24: 2593 184 1514 2788 | 29391 193 1336 2580
On the compression benchmark we’re getting about 2600 MIPS. Even with other stuff running that’s not a lot of spare CPU capacity. In another session, let’s check the CPU frequency:
root@prox:~# cat /proc/cpuinfo | grep Hz
cpu MHz : 1200.011
cpu MHz : 1200.013
cpu MHz : 1199.967
cpu MHz : 1200.036
You can see here the CPU is clocking right down 1.2 GHz to stay inside that 6W power limit. Let’s try doubling that limit:
powercap-set -p intel-rapl -z 0 -c 0 -l 12000000
Instantly we can see the base clock goes up to a respectable 2.9GHz
root@prox:~# cat /proc/cpuinfo | grep Hz
cpu MHz : 2900.065
cpu MHz : 2900.021
cpu MHz : 2900.020
cpu MHz : 2900.002
And we’re now getting 11000 MIPS! A huge improvement!
Intel(R) N100 (B06E0)
CPU Freq: - - - - - - - - -
RAM size: 31842 MB, # CPU hardware threads: 4
RAM usage: 882 MB, # Benchmark threads: 4
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 11163 279 3894 10860 | 116822 314 3172 9967
23: 11398 299 3879 11613 | 111820 306 3160 9675
24: 10963 298 3954 11788 | 112025 312 3155 9834
So why is the default power limit so low? Well for a system like the CWWK Crazy that’s intended to be fanless the long term power limit is set pretty low to stop it getting too hot. It’s that simple. And in fact if you run it fanless with a high power limit you will find it gets uncomfortably hot after a while (and potentially will then thermally throttle anyway).
The addition of one single tiny 80mm fan on the front is all it takes to turn your fanless but very power-limited system into a still-near-silent but way more capable machine. In fact the CWWK Crazy comes with fan headers and cables, and screw mountings for two 80mm fans. I’ve installed a single fan on mine by squishing some small grommets into the cooler fins then screwing the fan into them. It runs pretty well silent and barely gets warm to the touch even under full load:
Hooking up the supplied cable to the fan header is a little bit fiddly though!
Last words … the command above is not persistent and your power limit will be reset after a reboot. To make it persistant, edit your crontab:
crontab -e
Then add this line at the bottom:
@reboot /usr/bin/powercap-set -p intel-rapl -z 0 -c 0 -l 12000000 > /dev/null
Reboot and test, you should be good to go.
Not got a CWWK Crazy yet? Grab one now!