Adding low temperature threshold for deadzone or soft hysteretic behaviour

Started by Crashguard303, April 08, 2015, 09:09:39 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Crashguard303

Hello and thank you for this nice program!

Before I noticed at BOINC Message Boards, that such app exists,
I had to keep an eye on my GPU, it got too noisy when it was used by BOINC.

Using the GUI to adjust temperature threshold values for CPU and GPU (I worked on industrial electronics some years ago, now I am software developer),
I asked myself if it is possible to add a lower limit, as it is done in thermal controlling hardware, but in a proprotional way here.

As far as I got it, core using time is constantly lowered if target temperature is exceeded by 1°C
and constantly raised if current temperature is 1°C below target temperature.

So how about making this area bigger, creating a "deadzone" (e.g. as it is done on proportional joysticks):
If temperature is between upper and lower limit, CPU & GPU time isn't changed,
if it is above upper threshold (the threshold, wich is used at the moment), core use will be lowered constantly,
if it is below lower threshold, core use will be raised constantly?

This could reduce fluttering / overshoots.

Kind Regards,
Alex



P.S.: You could also stop raising / lowering amout of time, if temperature has reached the point between both temperature thresholds (first idea would have 2 lines in the middle).

X is Input (temperature),
Y is Output:
Upper Line: lower core usage,
Line in the middle: leave core usage as it is
Lower line: raise core usage.

In English, it is called three-point step controller,
in Netherlands, it is called driepuntsregelaar.

fred

Quote from: Crashguard303 on April 08, 2015, 09:09:39 PM
Hello and thank you for this nice program!

Did you try the settings in the Expert tab.
GPU Throttle Desktop Normal Laptop.

Desktop reacts slow, Laptop reacts more quickly.
One of these settings should reduce overshoots, should only happen when the regulator kicks in for the first time.

A problem: More than one regulator is active.
The GPU has is own regulator and TThrottle adds an additional one.
The GPU load fluctuates sometimes by 100 %.

Another thing you can try is a fan controller like Msi Afterburner

Crashguard303

Thanks for your answer,
yes, I tried some settings.

What are the ranges of Desktop, Normal and Laptop?
Do they differ in time of reaction (dode tijd), temperature threshold tolerance or factor (p) of temperature difference?

I can confirm that with the 1st time kick in and with the 100% GPU thing.

Speaking about regulator:
On my machine, CPU & GPU have their own fan speed control.
It can happen, that TThrottle lowers core usage while fan is accelerated (can be heard & measured), too.

What does happen at the moment:
I've got a NVIDIA GeForce GTX 560Ti with 2 fans (MSI Twin Frozr).
If a CUDA-task of Einstein@home is running, it works perfectly.

But if I run PrimeGrid or GPU-Grid, temperature can jump about 5°C up from one frame to next frame in TThrottle.
When the fan "kicks in" (it gets accelerated), it can drop (together with TThrottle) about 5°C from one frame to next,
but this will cause TThrottle to rise workload again, which will increase temperature... and so on.

So, this is why I suggested a "deathzone" for TThrottle.
This could let the built-in regulating mechanisms do their job plus "support them at the edges".


Kind regards,
Alex


EDIT:
I've tried all throttle settings in "Expert" tab, some GPU-projects cause high & fast changes in temperature.
It depends on the type of calculations,which a project does perform, I suppose.

As I've worked with audio-electronics, too, here is another idea to get a grip on the "bouncing" temperature (GUI-tab: "program"):
How about interpolating temperature (which TThrottle uses for core time adjusting) within an adjustable RMS-window?
This is what audio-level-meters do with the amplitude-values (also y-axis, similar to the temperature value in the graphs).

fred

Quote from: Crashguard303 on April 10, 2015, 11:16:10 AM
Thanks for your answer,
yes, I tried some settings.
Try Msi Afterburner.
Set up a custom fan profile, this will keep the fan from going wild, when it suddenly kicks in.
That should solve all the problems you have.

Crashguard303

I tried MSI Afterburner:
Good tool, but I've noticed that fan speed wasn't the problem.
Tried different fans speed settings and even constant speeds.

It's the task itself (PrimeGrid Genefer 3.07 (cudaGFN)).
I suppose that it has 2 phases where different artithmetic operations are performed, resulting 2 different temperatures:
In one phase, GPU temperature is about 88°C ... 90°C,
in the other phase, temp is about 81°C ... 84°C.

This leads to the problem, that if you set 88°C. .. 90°C as goal and the 84°C-phase runs, TThrottle will crank up GPU load (too fast).
Then, if the other phase is excuted, temperature gets above 90°C, because CPU load is at 100% and has to be throttled again.

Maybe adjustable min and max run time (as it is done for CPU) could help for GPU as well.


When running other projects' GPU-tasks, temperature doesn't even get close to 90°C, it stays relatively stable at 84°C ... 86°C.
Seti@home's cuda50-task for example: stable at 81°C even with 100% GPU load.
I guess that these projects do more homogenous & "simple" calculations.


Another idea:
As you already mentioned, in "Expert" Tab you can select GPU throttling for Desktop, Normal or Laptop.

When running a certain GPU project, "Laptop" setting does a good job in decreasing GPU load (fast), but "Desktop" does a good job in increasing (slow).
So, how about an user-defined Machine option with adjuststable "attack"(+) and "decay"(-) rate values (1% each x ms) , maybe plus delay values each (if temp above/below, react after x ms)?