New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] Exponentially adjust the rate of change for Auto #2492
Comments
It is set that, if "under load", it will already go to 75% of the max speed range you set at the first change. Might not be 100%, of the max fan speed, but that should still give you a good enough response to avoid throttling before the dynamic part settles in? You could also increase the max fan speed.
When not "under load", the auto will act as a linear fan curve with hysteresis + response time. I'm not quite sure to understand the overcooling part. You can reduce your min fan speed. There is no "dynamic control" when not under load, because then what's the target? If your idle temp is 30 and load 70, and you're at 45. Is that a hot idle or a cool load? Increase of decrease? Idle state could simply always be min fan speed and that's it, maybe that's easier to understand. Auto fan curve could also have some kind of visual indicator when it's in "under load", so the user understand it will dynamically change the speed to maintain the lowest possible %/RPM to keep it under the load temp.
That doesn't work. Makes for a horrible experience, aka not smooth. It will result in an unstable control. Put your step% to 3-4-5% and see how it behaves on changing loads, you'll see what I mean. |
Apologies, I don't think my original post was clear enough - The issue isn't with one consistent load that's easy to tune, it's when there are multiple tiers of load. To use an example from my testing, I have a game that has two states. One state is the gameplay itself, which is a heavy load that pulls the full 400w of my card and doesn't reach the fps cap. The other is the pause menu, which ends up hitting the fps cap so the card lowers it's power draw to 300w. Manually setting fan speeds, with a 400w load I can keep it steady at 87 degrees with ~86% fan. With the 300 watt load, I can keep it steady at 87 degrees with ~57% fan. Because of this I have a goal - I want the card to stay at 87 degrees regardless of the load. With the auto fan curve, this is very easy to tune on a per load basis. With the 400w load I can set the temp I want with fan between 75-90. For the 300w load, I can set the same temp but fan between 45-60. The issue is trying to make a curve that can cover both loads. If I'm running a strong load of 400w and the fan is settled at around 86%, when the load changes to 300w suddenly the card cools down rapidly. It cools to ~78 degrees, which is within the linear band. This ends up being ~75% fan, which as I mentioned earlier is too much cooling for the 87 degree target. This means it never gets above 81, which means it never starts getting the dynamic control to reduce the fans to ~57%, and instead of being barely audible the fans are now blaring at 75%. This is what I meant by overcooling. In the opposite case, if I'm running a light load of 300w and the fan is settled at around 57%, when the load changes to 400w there's nowhere near enough cooling. It immediately hits the thermal limit and starts to throttle. The issue now is that since the card was already "hot" and settled at ~57%, it has to slowly increase all the way up to ~86%. At 0.1% per second this takes a minute and a half, which as you can imagine isn't ideal. I appreciate your points though, they were just the only ideas I could think of to try and solve it. I also tried loads of fancy setups with temperature gates and states, but while I could tune it for two loads, if I then had, say, a 350w load it would just get stuck in hysterisis. I honestly don't know if this is a solvable problem without a totally different approach. The only other idea I had was a coarse fan curve based on GPU wattage rather than temperature to be able to detect load changes, which could then be mixed with a finer curve based on temp. I expect that's got it's own problems, though. |
I've been trying to use the Auto fan curve, but I've been running into problems in situations where the load on the GPU changes.
In order to combat hysteresis, I had a slow rate of change selected. This is great at holding the target temperature once it zeroes in, but if the fan is running slowly it can take a huge amount of time to speed up to where it needs to be, resulting in thermal throttling.
It also has issues the opposite way, where the fan will overcool, resulting in the dynamic percentage being lost. It will then fall back to the coarse step values present near the idle temp, often again overcooling, and then settling into an equilibrium far colder than the target with far too high a fan speed.
The proposals I have to make this a bit more usable are as follows;
Hopefully this makes sense, I've spent hours today trying to get it to work and I just can't work around these issues. The coarse jumps are ultimately the cause of all my headaches, since if you're not in the "sweet spot" close to the target temperature then you can end up in situations where it's overcooling and needlessly loud.
Thanks
The text was updated successfully, but these errors were encountered: