The Temperature Controller running every 30s and increasing Fan Speed by default by 5% might be too slow to React.
This could be seen for instance on a Supermicro X11SSM-F with Intel Xeon E3-1230 v5 with a Standard Low-Profile (1U) Heatsink that come with many such Supermicro Systems/Servers.
As such, the Heatsink as a very low Thermal Mass/Thermal Capacity, and even with only 4 Cores / 8 Threads, that was enough to bring the CPU over 72 °C [Celsius] while doing some Intensive Work (tested by doing a Linux Kernel 6.10 Compile Test with make -j16 and make -j8).
Therefore, probably 2 Control Loops should be Implemented running in Parallel with different Periods, either Synchronously (triggered by Interrupt) or Asynchronously or a mix of the two.
Proposed Periods:
CPU Temperature Controller: 5s Period
HDD/SSD/NVME Temperature Controller: 30s Period
Furthermore, the Fan Controller shall be run at the lowest of the Two Aforementioned Periods, in order to update the Fan Speed in a Timing Manner:
Fan Controller: 5s Period
It might also be worth to implement a non-linear Fan Speed Increase:
Increment by 5% Fan Speed if Temperature <= 50°C
Increment by 10% Fan Speed if 50°C < Temperature <= 60°C
Increment by 20% Fan Speed if 60°C < Temperature
(similarly for a decrease: one could reduce quickly if temperature fall < 50°C for Instance)
To be evaluated. In any case the Period for the Controller needs to be adjusted.
The Temperature Controller running every 30s and increasing Fan Speed by default by 5% might be too slow to React.
This could be seen for instance on a Supermicro X11SSM-F with Intel Xeon E3-1230 v5 with a Standard Low-Profile (1U) Heatsink that come with many such Supermicro Systems/Servers.
Part Number should be Supermicro SNK-P0046P.
As such, the Heatsink as a very low Thermal Mass/Thermal Capacity, and even with only 4 Cores / 8 Threads, that was enough to bring the CPU over 72 °C [Celsius] while doing some Intensive Work (tested by doing a Linux Kernel 6.10 Compile Test with
make -j16
andmake -j8
).Therefore, probably 2 Control Loops should be Implemented running in Parallel with different Periods, either Synchronously (triggered by Interrupt) or Asynchronously or a mix of the two.
Proposed Periods:
Furthermore, the Fan Controller shall be run at the lowest of the Two Aforementioned Periods, in order to update the Fan Speed in a Timing Manner:
It might also be worth to implement a non-linear Fan Speed Increase:
(similarly for a decrease: one could reduce quickly if temperature fall < 50°C for Instance)
To be evaluated. In any case the Period for the Controller needs to be adjusted.