Topton N100 Reporting 402 MHz
-
There are a whole, bunch of people using N100 based devices and not seeing that sort of low performance. Which is another reason I'm leaning toward some odd BIOS behaviour. I pretty guaranty that BIOS was never tested with FreeBSD. You're lucky if it was tested with Linux.
Been a while since I tried this but you might try adding a loader value:
hw.acpi.install_interface='Linux'
-
@stephenw10 Ha that's a very fair point! I'll try the loader value soon, thank you. The following are (poor quality, sorry) pictures of the CPU Configuration BIOS options screens, which strike me as the most likely relevant, at least:
CPU Configuration:
/home/john/Pictures/BIOS_Advanced_CPU_Configuration.jpegSMM Enhancement sub-menu:
/home/john/Pictures/BIOS_Advanced_CPU_Configuration_SMM_Enhancement.jpegAnd this is everything available in the Advanced tab of the BIOS interface:
/home/john/Pictures/BIOS_Advanced.jpegI realize that this is becoming something of a wild goose chase but if anything here catches your eye . . .
-
Hmm, I don't have an N100 (or similar) to play with so I'm not really sure. You might be able to set a higher flex ratio if you enable override there.
-
@stephenw10 Yeah that was something I tried but anything higher than 8 seems to just snap back to 8. I found some conflicting information about that setting, but the consensus seemed to be that it was the minimum multiplier allowed. It would take 7, but nothing above 8. Perhaps I'll begin the fraught task of seeing whether I can locate a different BIOS to try with this thing But going to try your loader value first for sure.
-
I had been pointed in the right direction in a couple of threads at the 'Serve the Home Forums' (STH Youtube channel's forums, under NETWORKING.). There are threads dealing with the CWWK 6 ethernet port (what I have) and 4 ethernet port models... I was just 'let's try this.. no no... try that...' and getting nowhere till I found that forum and hunkered down and read the two long threads on those two models and decided to try what was suggested (including a different BIOS with all the hidden settings exposed). Yea not a turnkey device but I was determined to make it work...
PFSense still doesn't display it quite right in the GUI
but I'm not complaining at this point.Once tweaked, in PFS I was able to go to System/Advanced/Miscellaneous and enable SpeedShift with 'core level control' and after some testing, left it at 60%. PowerD set OFF.
-
@stephenw10 just wanted to chime in and share that I running pfSense on a Trigkey G5 mini PC with a N100 and have also wondered why my CPU reads a max of 806 Mhz. Watching this thread in hope to find answers!
-
@stephenw10 said in Topton N100 Reporting 402 MHz:
Been a while since I tried this but you might try adding a loader value:
hw.acpi.install_interface='Linux'Unfortunately no change in behavior with that. I was momentarily optimistic when I found this post on unlocking hidden BIOS settings for the exact board that my machine has, although it does not seem to do anything for me.
Another post here purports to have a modified BIOS for it with more settings unlocked, which is clearly risky, but I may try because I'm out of ideas at this point . . .
-
Hmm, that's a looooong thread! If there are answers they're probably there.
-
@stephenw10 Ha, yeah and two separate very long threads unfortunately, and both quite meandering and not at all specific to one piece of hardware or problem. Lots of fun.
-
@stephenw10 I threw caution to the wind and flashed the modded BIOS from the one thread, and against all odds it didn't brick me. But it didn't open up new settings that seemed interesting to this issue either (e.g. CPU power related things). I booted up pfSense anyway and ran the openssl test a few times. The first time it was the same as always, but then it got a little better. Still about 1/4 to 1/3 of what I was seeing in Linux though. I checked the CPU freqs via
sysctl -a | grep dev.cpu
and saw they were going higher, but for whatever reason seem to top out at 1813MHz, which feels like a random limit.This was with SpeedShift enabled in pfSense and set to 0 (max performance). Next I tried with SpeedShift disabled entirely, and I seem to be getting openssl speed results closer to 1/2 what I saw in Linux, but the CPU freqs as reported by sysctl never move from 700MHz, so they're pretty clearly inaccurate.
Running
powerd -v
while I run the openssl speed test shows the current freq going to 801MHz under load, which I have read in various places is the maximum reported value (as reported by something at least) when it's at a boosted frequency. However it's also curious that the "wanted freq" reported bypowerd -v
never goes above 1602MHz, whereas the cores on the N100 can boost to 3.0GHz (or a single core can burst to 3.4GHz).What feels suspicious there is that 1.6GHz is ~50% of 3.0GHz (or 3.4GHz) and I am seeing ~50% the benchmarks for the openssl test that I saw with Linux. But then the question is: why would the "wanted" frequency top out at about half what the processor is capable of?
In any case, 1.6GHz is better than my apu2e4, but I do hate not understanding things :) Maybe I'll try randomly playing with some more BIOS settings if I get time, but since none of them seem obviously relevant it will literally just be a game of flipping a switch and seeing if it does anything, ha.
-
By way of an amusing point of comparison on my older N5105 machine,
powerd -v
reports this during the openssl test:
load 102%, current freq 2795 MHz ( 0), wanted freq 3992 MHz
And that's on a CPU with a maximum boost frequency of 2.9GHz. So I'm kind of lost with respect to attempting to establish a ground truth source of information. It seems that every place I look for a reported CPU frequency gives me something different . . .
-
Mmm, in my experience powerd will show 'wanted' values between the actual available steps too. So it showing wanting more than can be achieved is not entirely surprising.
-
@stephenw10 Well I loaded another modded BIOS from here that exposes power & performance options so now I can enable or disable SpeedStep and SpeedShift, C-states, change PL1 and PL2, etc. But nothing seems to meaningfully move the needle on this . . . incredibly frustrating. If anyone else who has been following this is running N100-based hardware, I'd be curious to know the results of:
openssl speed -elapsed -evp aes-256-cbc
for you. I can't help but wonder whether this is really highly specific to the hardware/BIOS combination I have, or if performance may be degraded generally for the N100 in FreeBSD, just not so much that it's generally noticeable when used for applications such as pfSense. That seems highly unlikely, but any points of comparison would be welcome. Thank you! -
One other observation - likely not related, but just piling on the strangeness here - is that iperf tests to this machine exhibit strange behavior. If it's been sitting idle for a bit, usually the first test shows about the expected 1Gbps speed (950+Mbps). But if I re-run several times, it consistently drops until it hits ~400Mbps and seems to stay there. I realize that iperf tests to the firewall as opposed to through it are of limited value, but I'm again using the N5105 box I have as a point of comparison, which gets consistent 950+Mbps iperf results. That machine has i225 NICs as opposed to the i226 in my N100 machine, but are otherwise configured identically. Getting ready to cut my losses and toss this Topton into an industrial shredder, but I sure would love to gain some understanding of what's going on before doing so, ha.
-
Have you checked the heatsink on that device is actually attached in a useful way? Wouldn't be the first China sourced device people have seen with the wrong shim or no thermal paste that was just running into thermal throttling all the time.
-
@stephenw10 Funny you should mention that, because my mind was going in the same direction. I think I'll take a closer look today. Being aware of such issues, I did peek under the board when I installed the RAM and SSD and was able to see the interface to the heatsink with no obvious gap. But I have some decent thermal compound on hand so I'm thinking I may disassemble it, clean off the stock compound, then re-mount the board before adding more compound and see whether there's a visible gap then . . . will report back again
-
Of course I realize only after writing this that I have the (seemingly) compelling data point of booting Linux and having it consistently knock the openssl test out of the park. That said, I've got no other ideas and not much to lose, so I'll still look at the heatsink situation . . .
-
@TheNarc Here are my results:
openssl speed -elapsed -evp aes-256-cbc You have chosen to measure elapsed time instead of user CPU time. Doing AES-256-CBC for 3s on 16 size blocks: 103729914 AES-256-CBC's in 3.01s Doing AES-256-CBC for 3s on 64 size blocks: 35140334 AES-256-CBC's in 3.00s Doing AES-256-CBC for 3s on 256 size blocks: 9071472 AES-256-CBC's in 3.00s Doing AES-256-CBC for 3s on 1024 size blocks: 2274966 AES-256-CBC's in 3.00s Doing AES-256-CBC for 3s on 8192 size blocks: 281410 AES-256-CBC's in 3.00s Doing AES-256-CBC for 3s on 16384 size blocks: 143837 AES-256-CBC's in 3.00s version: 3.0.12 built on: reproducible build, date unspecified options: bn(64,64) compiler: clang CPUINFO: OPENSSL_ia32cap=0x7ffaf3bfffebffff:0x98c007bc239ca7eb The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes AES-256-CBC 551789.26k 749660.46k 774098.94k 776521.73k 768436.91k 785541.80k
I think my board should also be compatible with the BIOS you flashed but I'm still running the original bios. I have speed shift enabled with the bar dragged all the way to "Energy efficency". I have also set the system tunable "hw.acpi.cpu.cx_lowest" to "Cmax" which seems like it allows the CPU cores to enter C2 and C3 states.
Scores seem much better than yours in pfSense but strangely worse than yours from Linux for small sizes but even better for larger sizes?
I'm not sure what to make of the CPU frequency readings, in the pfSense GUI the highest I've seen on mine is ~2200 MHz I think, but it always says 806 MHz max. The Zone 0 temperature is also permanently stuck at 27.9 ยฐC but the temperatures for the cores seem correct. My box came with Windows 11 Pro preinstalled and in Windows it did report speeds up to 3.4 GHz in task manager. When running the benchmark the CPU frequency in the pfSense GUI drops though instead of increase. Freqs reported by sysctl dev.cpu.x.freq seem to always be between 1410 - ~1700, doesn't seem to match at all what the pfSense web GUI reports.
Not sure if my box is performing as it should under pfSense but it's still more than fast enough for what I need it for. Instead though it doesn't seem like it's fully stable. When I let the preinstalled windows install some updates it crashed once with DRIVER_IRQL_NOT_LESS_OR_EQUAL but continued installing the update succesfully after. pfSense initially seemed stable but after 1-2 days it crashed and rebooted with a "general protection fault". I'm still troubleshooting this but if I can somehow stabilize this machine I will be super happy with it.
-
@AnonymousRetard Thank you for that! Very good to have a point of comparison. I may try the Cmax setting too, although I thought that only allowed it to go into deeper energy saving states, and therefore wouldn't have an impact on the clock speed not going high enough. Although I don't know what's going on at this point :)
I definitely had my system in the state you describe at one point too where the reported frequency dropped under load instead of increased, but the benchmark numbers seemed to indicate that the speed was indeed being boosted, not throttled.
I'm also not even sure how relevant or good of a choice this openssl benchmark is for me to be using, but it's the only thing I'm aware of that I can use without installing other packages. Thanks again and I'll post back after checking my thermal interface to the heatsink and/or trying that Cmax setting.
-
@TheNarc Good luck! I had not really thought about benchmarking my performance at all before reading this because the box just performs extremely much better than my old PCEngines APU. I no longer need to limit the amount of pfBlockerNG IP or DNSBL lists I want to load, and I've been able to run suricata inline IPS mode and FQ_CODEL limiters to make sure my latency no longer increases as I saturate my uplink (1Gbps) without loosing much throughput at all and it looks like the CPU usage barely budges still. On my previous router I couldn't run all these things and had to do a LOT of tweaking to be able to almost saturate my 1 Gbps uplink.
Therefore I have just been focusing on trying to reduce the power usage as much as possible which I think the Cmax setting help with. I doubt it increases performance but I guess it might when you run a single-threaded test like this openssl one (if you add -multi 4 as an argument though it seems to fully load all cores), because if the other cores go to sleep there should be a larger power budget left for the remaining core.