1
Hardware and Performance / New to OPNsense - improving power consumption
« on: September 09, 2023, 02:37:45 pm »
Hi all,
I've recently jumped into the OPNsense world, with a Supermicro 5019A-FTN4 (Atom C3758) and Intel X520-DA2 NIC. Running OPNsense 23.7.3.
Loving the OS so far, however, the power consumption of the device seems quite high given the load it's under.
It's consuming around 35W, which is about the maximum possible, and the CPU is pegged at maximum frequency (2.2GHz). Despite the system only being under minor CPU load (0-20%) most of the time.
My initial research pointed me at enabling PowerD and experimenting with the power mode settings. This does change the behaviour, but not in particularly desirable ways.
The correct frequency options are detected:
Here are the c-states:
I'd like Adaptive or Hiadaptive to actually adapt, and lower the frequency when the system is idling, which is most of the time. Only ramping up when required.
Any pointers on where to start investigating next would be great. Thanks in advance.
I've recently jumped into the OPNsense world, with a Supermicro 5019A-FTN4 (Atom C3758) and Intel X520-DA2 NIC. Running OPNsense 23.7.3.
Loving the OS so far, however, the power consumption of the device seems quite high given the load it's under.
It's consuming around 35W, which is about the maximum possible, and the CPU is pegged at maximum frequency (2.2GHz). Despite the system only being under minor CPU load (0-20%) most of the time.
My initial research pointed me at enabling PowerD and experimenting with the power mode settings. This does change the behaviour, but not in particularly desirable ways.
- Minimum: Locks the CPU frequency at 800MHz and reduces firewall throughput to a maximum of 400Mb/s on my gigabit connection.
- Maximum: Locks the CPU frequency at 2200MHz
- Adaptive: Locks the CPU frequency at 2200MHz
- Hiadaptive: Locks the CPU frequency at 2200MHz
The correct frequency options are detected:
Code: [Select]
dev.cpu.0.freq_levels: 2200/0 2100/0 2000/0 1900/0 1800/0 1700/0 1600/0 1500/0 1400/0 1300/0 1200/0 1100/0 1000/0 900/0 800/0
Here are the c-states:
Code: [Select]
sysctl dev.cpu | grep cx
...
dev.cpu.0.cx_method: C1/mwait/hwc C2/mwait/hwc
dev.cpu.0.cx_usage_counters: 94456259 0
dev.cpu.0.cx_usage: 100.00% 0.00% last 123us
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_supported: C1/1/1 C2/2/50
I'd like Adaptive or Hiadaptive to actually adapt, and lower the frequency when the system is idling, which is most of the time. Only ramping up when required.
Any pointers on where to start investigating next would be great. Thanks in advance.