Hacker News new | past | comments | ask | show | jobs | submit login
Better PC cooling with Python and Grafana (calbryant.uk)
258 points by naggie on March 3, 2024 | hide | past | favorite | 152 comments



It's surprising that there are no PC fan controllers that would use some variant of PID control with a temperature target. Traditional fan curves are simple, but the result isn't very intuitive.

And many desktop motherboards manage to screw up even the basic fan curve, offering users control of only two points within strict bounds, no piecewise linear curves or hysteresis settings.

I started a fan controller project some 4 years ago and it's now sadly in limbo, waiting for me to solve power filtering issues for the makeshift power supply it grew into. Maybe I should just limit myself to 4-pin fans...


PID control isn’t an easy solution in PC cooling.

CPU temperatures can swing from 40C to 90C and back in a matter of seconds as loads come and go. Modern fan control algorithms have delays and smoothing for this reason.

If you had a steady state load so stable that you could tune around it, setting a fan curve is rather easy and PID is overkill. For normal use where you’re going between idle with the occasional spike and back, trying to PID target a specific temperature doesn’t really give you anything useful and could introduce unnecessary delays in cooling if tuned incorrectly.


I would be surprised that a PID controller can't adjust the control signal of the fan on the order of milliseconds/hundreds of microseconds. The mass of the fan would be the bigger issue.

Something that would help is multiple fans being adjusted by the same PID controller. It's not a problem if they're spinning too fast, but if you need more cooling the controller needs to increase air flow at the fastest rate which means turning up multiple fans.


Fans are annoying enough when at a steady speed, but a fan that is continually changing speed sounds extra irritating if it’s in the same room.

Some sort of smoothing plus a conservative base rate might be more tolerable.


> a conservative base rate

Do you use windows?

I find that with windows the fan is always spinning, even if at low speed. While with linux most of the times it is not spinning at all.


>Do you use windows

In a desktop the motherboard controls the fans unless you have an alternative like fan control installed, so not windows.

In a laptop it's either still the motherboard, or a specific chip used to manage the fans and other peripherals (ie for Dell/XPS it's locked out of bios control and you need to use Dell's special software to adjust it; Fuck You, Dell!), so still not Windows.


Well a basic windows install will keep the CPU more occupied than a basic linux install, when both are idle.

This reflects in the CPU being hotter, which reflects in the fan spinning more.


In windows my CPU fan is always spinning although silently in my experience but my case fans spin down.

ASUS motherboard Noctua fans if that makes a difference.


I’m on a Mac - and for the first time a computer I can’t hear (it’s a model with a fan).


Mac tend to run hot to be more silent.

I had to throttle my CPU in my macbook or it would shutdown for overheating while compiling.

I don't consider that a feature.


sounds like an intel mac


The problem is that you really don't want the fans to react that quickly. Fans make noise, and a changing noise is far more irritating than a constant buzz in the background.

You quickly stop hearing a fan constantly running at 50%, but a fan randomly switching between 10% and 100% gets on your nerves extremely quickly.


I think the thermal mass of typical desktop coolers is large enough that a smoothly tuned PID controller would fare well, without hindering performance or annoying the ueer.

I suppose the best way would be to try, but my current computers have no (or very unstable) interfaces for fan control.


Modern CPU coolers are basically heat pipes connected to a radiator.

They have very little thermal mass and if too much energy is in them the liquid all evaporates.

When the liquid evaporates their performance falls off a cliff.


Wouldn't the better solution be to rely on the heatsink temperature instead of on the chip/core temperature then? I mean in the end, the air from the fan is cooling the heat sink, not the chip directly.


Why would it be better? In the end, you would like your CPU to stay (at most) at, say, 40 degrees, not your heat sink — that thing can be at 35 if it needs to.


Heatsinks don't typically have thermocouples, is the problem.


but it isn't hard to add thermocouples to a heatsink? perhaps the reason for not doing this is because the improvement is not visible in standard benchmarks? it is not improving the overall performance, not reducing the peak noise, just make the transition smoother...


the CPU temp can do that, but your typical desktop air tower has a lot of thermal capacity. if it took 5 seconds for the fan to react, that wouldn't be a big issue.


Desktop case fans also have a fair bit of inertia. They take at least a second or two to ramp up to full speed, and longer to coast back down to their minimum speed.


> It's surprising that there are no PC fan controllers that would use some variant of PID control with a temperature target.

They actually exist (such as ARCTIC F12 TC) but not very common. Separate controllers such as Adafruit EMC2101 are also available.


Both EMC2101 and F12 TC work with a look up table, so a normal curve as opposed to a PID.

You can verify that in the datasheet of EMC2101, and in the case of F12 TC in product descriptions (..The fan responses to the rise in temperature swiftly – within a critical 6°C range, the rpm of the ARCTIC F Pro TC fan increases from around 500 to its maximum of 2,000 rpm (the steep curve in the chart).)


IIRC because tuning PID controllers for vastly different heating and cooling rates isn't that easy. A CPU can ramp up/down a lot quicker than the cooling system could or should even attempt to react. It's easy to end up with a oscillations the common temperature vs. speed curves (maybe with a hysteresis range) is already annoying enough to tune. Good luck having users come up with good PID terms for their individual combination of parts (CPU, thermal interface, mainboard, case, fans, pump, radiator, etc.).


I’m more surprised there aren’t fan controller standards so the mobo or OS can tell the fan to ramp up with usage instead of relying on temperature probes.


There are, you can override your fan speed from the OS. But that leads to issues with a control software crash potentially leaving your fans stuck in a low-speed state.

There's pretty much a 1:1 link between CPU load and CPU temperature, so relying on temperature probes is good enough for almost all situations.


> There are, you can override your fan speed from the OS. But that leads to issues with a control software crash potentially leaving your fans stuck in a low-speed state.

That’s why I didn’t talk about user software and was focusing more on mobo (since it knows the current state of all usage and is not os-dependent) or low-level OS hooks which can have battle-tested processes to make sure that the fans are not left uncontrolled. I appreciate you bringing up the point though, it’s vital to make sure the chips don’t fry.

> There's pretty much a 1:1 link between CPU load and CPU temperature

Yes agreed, but there’s a lag time between the two


I don't think you can fry a modern chip, at least without really going out of your way to.

But even if you just forced all of your fans to run at 0% (or physically removed them) I would expect the CPU to trigger PROCHOT and throttle it's performance, hard crashing if it has to.


Honestly, the fan should ramp up to maximum speed if not explicitly set within the past 500 ms or something, and also have a high-water mark temperature that if crossed while the fan isn't at maximum speed causes the fan to run at maximum speed until the machine restarts.

If the OS can't keep up with the fan speed update schedule, go into your failsafe mode.

If you cross that maximum temperature while being commanded by the OS to run at maximum speed, then that's presumably not an OS bug. If otherwise, treat it as an OS bug and put the OS back into diapers, to re-try the big kid underwear on the next restart.


I don't know about any standards, just about software that tries to support as many proprietary interfaces as possible (and doesn't have support for plenty of hardware). Have I missed something?


You don't really need PID, just a decent fan curve with https://github.com/Rem0o/FanControl.Releases


Too bad it's completely closed source and MS Windows only.


Yeah there is really a lack of good quality of life tools on Linux.



Another thing I've had great success with on my AMD 7700X is to use AMD Ryzen Master to reduce the TDP.

The chip comes to consumers overclocked by default with a TDP of 105W. I suspect this is the case so that it can beat Intel on benchmarks on "default" settings.

You can set it to "eco mode" and have it run at 65W or 45W TDP. Under load, this only results in like a 5% reduction in performance for a dramatic reduction in electricity consumption, fan speed, heat, etc.

Not sure if the 5500x series chips are overclocked but using eco mode could be a good approach.


Just an FYI AMD Ryzen Master installer contains a dark pattern.

When you first launch it you have to scroll down the disclaimer/license to check off the "I agree to terms and conditions" box (which is obviously unchecked by default).

When you do, it creates the "install button" you can click but the checked box now sits beside text about sending AMD information and if you aren't looking you may assume its still the same text as when you checked the box.

The end effect is to get the user to agree to send data without them noticing.


Just tried installing it, that doesn’t happen (any more). How recent was it that the dark pattern existed?

After you agree to the disclaimer the checkbox disappears and there is no changed text that appears.


I went through the install process 5 minutes before I posted. Using the same installer I recorded a video and converted it to GIF. I redownloaded the installer to check and it still does this.

Note that while its large in the gif because I only clipped the installer, the installer is the entire focus here and the actual window size is small and it was very easy to miss on a full desktop. The installer doesn't full screen and just sits in a little box. You can see text in the background is the regular size text from the hackernews post you replied to in the background to give an idea of relative sizes.

Recording here:

https://i.ibb.co/h2MRz60/AMD-Ryzen-Master-Dark-Patterns.gif


Here's my recording:

https://ibb.co/LnbH6Wy

No idea why I’m not seeing the same thing you are.


totally different. I wonder if its some kind of a/b testing.


Very strange to be sure. Perhaps it’s because my CPU is Intel and not AMD.


No idea. The computer I'm running it on using a 7900X and an RTX 4080.


I’ve tried Eco mode on AMD parts before. The performance drop was a lot more than 5% for heavily multithreaded workloads (compiling), but I could see it being negligible for certain single threaded workloads.


Interesting we have different reports. My experience was far more in line with parent's in that enabling ECO mode had <5% multicore performance drop (single core unchanged). ECO mode also lowered temps several degrees. Seemed like a no brainer for my use case.

In fact, chips have gotten so fast these days, I am seriously considering running my desktop on a laptop-class CPU. Should be able to run it near silently on air cooling alone with low power consumption.


I've been doing that with a Minisforum bd790i -- a Ryzen 7945HX which is a monster of a CPU (16 zen4 cores, with very high single threaded and multi threaded benchmarks[1]) with a paltry TDP. Minisforum even coined the term "Mobile on Desktop (MoDT)". It's a great platform that is utterly cheap for what you get (mobo w/ PCIe gen5 + CPU + heatsink for less than the price of an individual comparable CPU). Note: This CPU is usually in a laptop with a relatively underpowered cooling solution compared to the linked motherboard with a proper heatsink+fan. Hence the benchmarks have a very wide spread due to varying (usually laptop-based) cooling.

Pertinent to the conversation though, the BIOS is very much lacking, and supposedly software-based fan control is not implemented. That said, running the fans constantly at ~silent levels of rotation keeps the temps cool (you can even run the heatsink without a fan if you want).

[0] https://store.minisforum.com/products/minisforum-bd770i?vari... [1] https://www.cpu-monkey.com/en/cpu-amd_ryzen_9_7945hx


I have AMD and Gentoo. For daily use an eco mode is OK. But at the weekend when I need to emerge, have to use all the power.

But also, now, the deps for $WORK are in pre-buolt docker so I'm not rebuilding nodejs every other weekend.


AMD 7700X is probably factory overclocked 7700, it would be cheaper to just buy 7700. Probably the only difference is that some of the 7700 chips cannot guaranty same clocks and stability when overclocked to 7700X specs.


The current price difference on Amazon is $5. But the 7700X doesn't include a cooler. If you're not planning to use the AMD cooler, may as well pay an extra $5 and get a processor that binned better (probably), not have the extra cooler, and you can fiddle with voltage and TDP/power limits from there.

Depending on your cooling, having a 100Mhz higher max clock could be worth $5.


I know someone that bought an AMD CPU but it was a factory-sealed empty box. Turned out sending out a cooler-free product in the same packaging allowed for the CPU to be taken out of the box's window without breaking the seal. Hopefully they've updated the packaging.


I don't know about the 7700, but I have a 7900 and it makes the 7900X look utterly ridiculous in comparison, especially because it comes with a decent cooler (incl. RGB if people care for that). So yeah, I'd not waste extra money on the X variant. (Though for games, the 7800X3D is probably the best of the bunch)


Same with GPUs - reducing the power budget on a 3080Ti down to like 75% reduced the performance by maybe 5-10% but dramatically reduces noise and heat produced.


What do you use to undervolt your GPU?


MSI Afterburner works great, no matter what is your GPU brand.


On Linux you can use nvidia-smi to set a power target directly in Watts, works well.


That doesn't undervolt. On Linux you 'cannot' undervolt as the userland software doesn't support it, but there's a trick.

Instead you can overclock, which moves the curve to the right (same voltage for a higher frequency), and then add a clock speed limit. You are now running the same frequency at a lower voltage.


The main problem with the AMD 5000 series is their high idle (non-core) power draw of around 20 to 30W.

AMD have reduced this in their 7000 series.


Got any specific numbers?

On the Intel side of things, I've seen my 14700K idle at around 5W (which shoots up to 300W under load, I find it greatly amusing) and my 12700H at 0.5W or less.


My 5900x, with core parking on and energy saving windows settings idles at 45W package power. Only two cores are really active, one each at ~2/3W. The others at <0.1W.


My 5950x idles at 35W. It's a known problem with AMD. It isn't the CPUs using the power its the uncore/SoC that eats the power.


You can also undervolt most modern AMD parts and actually gain performance


How does that work? Is it just that it can run at high speed sustained if it doesn't have to dissipate as much heat?


Yes, exactly. Modern chips thermal throttle by default, their turbo clocks/voltages aren't sustainable with most cooling solutions, so, reducing the voltage the chip runs at lowers the power consumed and allows the chip to maintain a higher clock for longer durations.

There is, of course, a risk that the lower voltage won't be stable, but, as long as you stress test your system as you would while overclocking, you'll be able to find a lower voltage that is workable.

The 7000 series ryzen chips have this built into most motherboard bioses by the name 'pbo offset' (or similar) which modifies the stock voltage curve lower, and can set new temperature targets if desired. I'm running my 7950x at PBO level 3 with an 85c target, works well with no more fuss than a couple reboots really.


> their turbo clocks/voltages aren't sustainable with most cooling solutions

And also, starting with 7nm it becomes a lot harder to transfer that heat out of the chip, even if you have thermal mass. The IHS itself becomes a bottleneck.

On X3D chips it gets even worse, as the cache acts as a heat shield too - these chips actually are pre-binned running at relatively low voltages, which is why they usually don't see as huge gains in as others in curve optimizer.


The chips overclock themselves under load but it's unsustainable. Limiting their TDP can allow them to sustain their overclocks longer/indefinitely.


I had a similar problem to what the article describes with a Ryzen 9. The reason was the the CPU would constantly automatically spike the clock frequency to overclock the CPU. The solution was just to disable this specific feature in the BIOS.


Yes, you can do the same with the 5000 series. The 5600X can be restricted to 45W max tdp & the 5800X to 65W.


For people that want to do something similar on Windows, I can wholeheartedly recommend FanControl [1]. It's sadly not open-source, but it works great, and is quite pleasant to interact with.

[1]: https://getfancontrol.com/


I'd also like to plug the underlying library LibreHardwareMonitor [0], where I was able to make a PR to support a bonus sensor on my particular motherboard-variant.

[0] https://github.com/LibreHardwareMonitor/LibreHardwareMonitor


It seems to be an unpopular opinion these days, but I have no problems paying for software that is good and comes with a credible promise of ongoing support. FanControl looks pretty cool, and if I can jettison the mental sticky note in favor of them maintaining it I am all ears.


I came here to recommend this.

In my 15 years of PC building this fan software tops them all. Huge amount of customisation and actually allows you to control fan speeds both under CPU OR GPU heavy loads at once.

This software can do what this article is looking to do, but I am not sure if there is a non-Windows version.


Fan Control is amazing, it's pretty easy to set up stuff and keeps my PC quiet.


Curious as to why you think it’s sad it is not open source .


Why some people prefer open source software is well established by now - so if you have a bone to pick with this position you don’t need to wait for an answer, go nuts.


No bone to pick. Genuinely curious as to why this individual feels sad about it not being open source.



Apart from what foofie already pointed out, I think it is 'sad' in the sense that a project like this is

- one you might expect to be open source, since there is no monetary interest behind it besides an option to donate, and

- one that would potentially lend itself quite well to being open source, since it would offer a great base for other people to tinker around with their own cooling setups.


Given those points and given that fan control has been around for A G E S, the collective OSS community need only blame itself for the lack of an open project that has parity with FC.


Ok thank you. I see the linked project somewhere closer to shareware. I don’t expect that to be open source (my own expectation).

But seems over time we’ve moved away from shareware and maybe open source to open source shareware. I’m trying to grasp how the expectations of people have changed over time. Not looking to start a flame war.


> Curious as to why you think it’s sad it is not open source .

You're commenting on a discussion on how someone leveraged this sort of open source software to improve cooling.


Well thank you for pointing that out. I missed that context.


It’s open source


No it isn't. I use and like the app also, but the GitHub repo link on their page takes you to a separate release artifact management repo, not the source code itself.

> https://getfancontrol.com/

Their linked GitHub repo, which only has a compiled zip uploaded for release artifact creation, not the code:

> https://github.com/Rem0o/FanControl.Releases

From the repo:

"Sources for this software are closed."

I wonder why the author hasn't open sourced it - there doesn't appear to be any commercial aspect to the tool, and the author makes a point of it being "free" on the site.


The author probably used some non open-source bits when building the thing.


AI ownership most likely. Preventing LLMs from using it’s code in an output and not putting it in the ‘safe to spew’ bucket.


This tool has been like this for years even before LLM was popular.

Not everything is about LLMs.


I've been using an esp32-based fan controller with esphome and inlined C++ for my waterloop for a while, with a custom (but super simple) temp control algorithm as well:

https://github.com/kelvie/esphome-config/blob/master/pc-fan-...

The main reason for doing this was so that I didn't have to connect the controller to my main PC via USB to program it (I can change the target points via MQTT/wifi).

Playing around with this stuff on my laptop I've also noticed that you have to be careful what calls you make when querying system status on a loop, some things (like weirdly, `powerprofilectl get`) even when called every 5 seconds drains a surprising amount of battery, so in a sense, your tool may start to affect the "idle" power consumption somewhat, and you need to test that.


This looks so promising! The only issue is that many MB don't have drivers available in the Linux kernel, makes reading temp control not possible yet.


Please do some measuring of core temperature response to load before and after re-pasting / upgrading the thermal compound. Something between a large grain of rice and a pea, and I like to clean the CPU and cooler cold plate completely, paste the CPU, then press and smear around the cooler onto the CPU before mounting it, to ensure full surface area coverage with a thin layer of compound.


As it happens, I did this morning!

I switched from years old Arctic silver 5 to Noctua NT-H1. It resulted in a dramatic difference. 64c loaded vs 84c -- I now suspect I had an air bubble which may invalidate the initial motivation for the work in the first place :-)


The first thing I noticed was that your idle temperatures are exceedingly high, especially for an AIO. My air-cooled ryzen 5 idles at around 35c with nearly zero fan speed on a $30 air cooler.

Most AIOs need servicing after a few years- find instructions on how to disassemble yours, clean the water block, flush the radiator, and refill with a deionized-water/glycol mix.


Genuine question: I've known the law of "pea sized amount" for thermal paste for 20 years or so. Does it still hold true for modern (and larger) CPU dies? I haven't upgraded in a long time so genuinely don't know, but also wouldn't want to use outdated knowledge!


You need to understand what is thermal paste is used for and then you would understand what for the most of the time pea size is okay.

It's just a compound what helps with a heat transfer. Both CPU IHS and the radiator are not ideal surfaces, so if you install one on one without TP then there would be bubbles of air trapped in imperfections of the surfaces. They are not a problem per se but they do make the heat transfer worse, so IHS is hotter than it could be and a bit less effective to transfer the heat to the radiator.

You have two options to improve the heat transfer:

a) polish both the IHS and the radiator to a perfect surface, ie they would should mirror like; and then you should use a torque screwdriver to ensure what the cooler is tightened and leveled exactly right;

b) or you can just slap some thermal paste between them and call it done.

And in the second case you need 'just enough' of TP to smooth out the imperfections, but if you slpat too much then again you are making the heat transfer between the IHS and the radiator worse.

So if you ever find yourself minding about how much TP should you use then just start with a pea size, place the radiator (you can even screw it if that's your jam) then remove it and look at how the TP spread around the IHS. If it covers 90% with a thin film (and your radiator isn't the lowest shit tier polished with the old rusted raspel) when you are fine enough.

The only difference between 20yo and now is what IHS are way more larger so now you may find a need to use... a larger pea as a reference.


You want to use as little paste as possible while fully covering the heat spreader.

Most modern coolers will provide sufficient pressure to spread a pea sized amount of thermal paste to cover the whole cooler.

There are also thermal pads, both reusable and single use, that perfom well and don't require any guesswork.

If you want to paste, noctua has the best paste in terms of thermal resistance, but mx4 or mx5 both perform well, as does cryorig and a bunch of others.


>You want to use as little paste as possible while fully covering the heat spreader.

The data disagrees. Too much paste is fine; too little is not.

https://youtu.be/EUWVVTY63hc


Yes, but that's not what I said. Too much paste makes a mess, too little makes, well, a different mess. A pea sized amount is plenty, being that a pea is fairly large.

Personally, I do an X if I'm not lapping, but that is more complex and a dot works just fine for most things.


pea-sized is against noctua's own recommendation for AM5. they recommend dots in each corner and a bigger one in the center. [1]

also, Kryonaut is one of several high-performance thermal pastes that outperform NT-H1 and even NT-H2, but they require regular (~1 year) re-application. Noctua paste values stability over performance in this regard.

though if you need stability and performance, nothing really beats Honeywell PTM7950, even on a desktop chip.

[1]: https://faqs.noctua.at/en/support/solutions/articles/1010003...


I've seen reports and debates that modern heat spreaders are too large for the pea method, and that an X pattern is more common now.

Here's one of the test videos you can find on Youtube about the subject: https://youtu.be/aaxBYrZFJZM?t=199


I clicked eagerly and appreciated the approach but not the analysis of the results. The only judging criteria was "coverage" (enough but not too much) but no thought was given to thickness, and some application patterns lend themselves to thicker results (just compare the five dots pic to the full coverage or three lines pic). You can see from the results that the "winners" have a fairly thick layer of substrate. You want the absolute thinnest layer of thermal paste that will achieve full coverage.


Thanks for posting an actual test rather than perpetuating tradition without verification


Science!


Giving a single moment of thought to what happens when the paste is squished to this should lead everyone to the conclusion that a square that is equidistant from the edge to the center is the right pattern with maybe a dot it the middle for piece of mind.

That wasn't tested there.


A square is closed and will probably result in a bubble of air being trapped.


You don't have to close it nor do you have to put it on straight down.

It's pretty easy to get this right by using your head rather than following some ethos.


Youtube recommended a similar video where they tested various patterns. Spreading paste over the the whole heat spreader resulted in a small air pocket, while the same method with an additional paste dot in the middle didn't have such issues. But at that point maybe you're getting too much paste instead, as mentioned you want as thin layer as possible. At the end of the day, it probably doesn't matter much anyway.


Video with spread patterns under transparent plate:

https://www.youtube.com/watch?v=wn2ln04dquM


It depends how much you care about tidiness/perfection. Unless you use a metal paste, the worst that can happen with too large amount is that it will leak outside. And you can wipe that - that's it. So feel free to use too much and just clean up afterwards. That's better than using too little.


Another way to help with cooling..."Energy Efficiency across Programming Languages" - https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sle...


Their 2021 update here:

https://www.sciencedirect.com/science/article/abs/pii/S01676...

Link to full paper via sci-hub:

https://sci-hub.st/10.1016/j.scico.2021.102609

This appears to be a web page where the authors have posted links to their research, data, updates, etc:

https://sites.google.com/view/energy-efficiency-languages/

For transparency, I've posted these here recently:

https://news.ycombinator.com/item?id=39286827


This is something we've been slightly interested in, as a means to reduce power consumption and the number of servers we need to operate. It's just an insane amount of work trying to rewrite software and finding the bits where produces the most results.

It's not really surprising to see C and C++ doing so well, also positive to see Rust being up there as one of the most energy efficient languages. The one language that keeps surprising me is Pascal. It often in the top 5 - 10 in terms of speed and it also does really well for energy consumption. While I haven't read the article, I could also imagine that it's good in terms of "power spend compiling" due to it's one-pass compiler. What I'm not sure of is if it's all a result of the language design, or if it's because it just had a lot of work put into it over the years by some really smart people. I presume that the tested implementation is Free Pascal.


Now we just need a follow up that takes the average dev time for each language and show which one has the optimal ratio based on these two values. It should be possible to draw a curve based on how long and how often the program will run to plot exactly when it makes sense to switch to something more efficient but also more dev intensive. Sort of in this fashion: https://xkcd.com/1205/

E.g. assembly would have very low energy use by itself, but would require an inordinate amount of human energy (~8.7 MJ/day) invested to get that end result, making it very inefficient when the whole picture is considered. Unless that code runs everywhere constantly for years of course.


Why is there so much dust on the radiator? Is he sucking hot air through the fins into the pc, or is there soooo much dust inside the case that this is actually the radiator being so saturated with it that it is starting to ooze out?

Either way there seems to be a serious problem with unfiltered air being sucked into the case here. That radiator isn't going to radiate if it is wearing a furr coat.


> I’ve played with PBO2 adjustment as I said, but it should be possible to reduce the voltage at the expense of a bit of performance.

Undervolting with PBO2 should not decrease peformance unless you have done something very wrong.

Ryzen CPUs have limit, max temperature, frequency, power, and voltage. The voltage curve follows a frequency curve so higher clock speed requires a higher voltage. A negative offset in PBO reduces the voltage required for a given frequency. It shifts down the voltage curve. Lower voltage typically means less heat and power draw so you can achive a higher clock speed without hitting temperature, power, or voltage maximums.

If your system is stable when undervolting you don't see a loss in performance, generally it improves because you are able to reach higher clock speeds before running into voltage or power limits. The exception is if you induce a rare issue called clock skew at extreme cases that i'm not even sure you can do with PBO2.


I geeked out on something like this for my TrueNAS server setting fan speed based on drive temperature with a PID controller. e.g.

https://github.com/dak180/TrueNAS-Scripts/blob/master/FanCon...

(That's not mine. I think I wrote a variation in Python.)

Then I realized: my server is in the unfinished part of my basement where I can't hear it anyway. Let's just run the fans at 80% speed all the time since that's sufficient to keep the drives cool.


Better cooling with Python, Grafana, Prometheus on top of Kubernetes with enchanted AI. Who needs PID these days?


Didn't pick the right fans for going extra slow. These run at 1700 RPM by default, whereas Noctua has a version - even in the redux line - that runs at 1200 RPM. Though the non-redux like gets even slower - so much that Noctua includes a "low noise adapter" (presumably a resistor).


>I presume the quick temperature rises are specific to modern Ryzen CPUs, perhaps others too. Maybe this is due to more accurate sensors, or even a less-than-ideal thermal interface.

It’s because the cpu is designed to push itself to a thermal limit and have its output performance decided by how you keep it at that limit so it essentially goes full throttle to 90deg then slows down if your cooling can’t keep up which causes the fan spikes.

So I’m told from the research I did.

My latest machine had the same issue but just updating all drivers, setting some auto curves and adding easing for the fan spin up time completely solved it.


This is pretty cool but honestly just setting the pump speed to a constant that's not annoying and setting the fans to a constant that's not annoying is likely to get the same result.


What an awesome post! I recently built a new PC based on workstation parts that frustratingly didn't expose the actual CPU temperature except in the IPMI interface; I was starting to hack something together with Netdata and ipmitool but then I saw this post and in a couple hours had a Grafana ingesting the ipmitool sensor output every 10 seconds or so. Thanks!

https://i.imgur.com/KDeHgFY.png


My problem is that I just don't want to think about it. Complex solutions are cool but ultimately it's bandwidth I could use for better things. I like my Chromebook because it requires nearly zero mental effort. I install the package and I use it. Ubuntu was great because you could Google it and get an answer that applies, and ChromeOS is great for the same reason. Linux could be as great as macOS, but it's the fragmentation that kills it.


>Linux could be as great as macOS, but it's the fragmentation that kills it.

No, Linux is as valid technologically as the other offerings, fragmented or not. It's just that it doesn't have a mega-corp behind it to push, to make deals with businesses, schools, governments. As soon as Google stepped in with Android and ChromeOS, suddenly it was everywhere.


Android and ChromeOS just reinforce my point though. There is one Android™ and there is one ChromeOS™. I don't have to support Android with this package manager and another with that display server. I don't have to wonder what DE the Chromebook user has running, or whether they have a certain package installed that conflicts with mine. If those were concerns that had to be considered, would Android and ChromeOS have gotten as popular as they are? Food for thought.


I think what you describe is a necessary part of what I'm trying to get at, but not sufficient enough for it. So, yes, successful products tend to converge, because support and maintenance makes more sense that way. But products are not successful because of this convergence. If there was only one Linux, it would be about as popular as the myriad of them are right now. What it needs to be more popular is to be a product that a giant corporation pushes with all its might. Only that the standard PC market is pretty saturated - which is why a machine like the Valve Deck might be successful for Linux (or already is, if we consider some millions of sold units a success).


I had very similar issues with my nzxt AIO and a Ryzen 5900X. What annoyed me the most is that other vendors offer water temperature based fan control by default. This makes NZXT AIOs basically unfit for modern CPUs and I don't understand why they're recommended and well reviewed.

I switched to a Fractal Celsius and its default setting is to control pump and fan speed by water temp. Problem solved.


Has anyone tried a controller for cooling that is dependent on processor current consumption? Temperature measurements lag, but the current used by the processor is instantaneous and directly converted to heat (P = VI). In theory, it should be possible to reduce temperature spikes.


With a Noctua NH-D15 and about 30 minutes spent tweaking the motherboard fan curves I was able to get my 5950x to not thermal throttle without producing any noticeable fan noise.

This seems extremely over-engineered and sounds like it could have been solved by using Noctua or similar quiet fans.


The author specifically mentions (multiple times) that they are using Noctua fans...


Not exactly the optimal Noctua fan, considering it's a high RPM redux.


How did you achieve this? tweaked by hand? i'm in the middle of building a pc and would love to know more.


I just played around with the fan curves. The Noctua fans are pretty damn silent below a certain speed (especially with GPU fan noise usually being louder). So I tried to keep them running faster than necessary at lower speeds and only ramp up a little bit when the temps go up, except at 80-85 or so degrees at which point I ramp up much faster until they're basically at max at 95 degrees. The CPU never really seems to hit those temperatures, as the NH-D15 is an over-sized cooler even for that chip.

Most of the work is in stress testing the CPU to see what you can get away with without thermal throttling. Also helps to do this in the summer if you're in a no-air-conditioning-by-default country.


It says 5959x in the article but it should be 5950x.


I just use FanControl , and I'm very happy with it. Windows only, unfortunately.


On AMD it helps to have pretty recent kernel and amd_pstate=active string in the kernel boot params. I haven't checked the temperatures but I think I've started to hear the fan noise less after enabling it. This option was finally implemented in kernel 6.1 or 6.2. I don't remember the exact version, it happened only 1-1.5 years ago.


I got annoyed at my fan speeds so decided to experiment with controlling my fans with Python and measuring the results.


You likely have a setting for fan ramp time in your bios, usually in seconds. So setting your pump to always run at 100% and your fans to ramp slowly, say 10 seconds or longer, and using a minimum fan speed that is as high as tolerable would likely work as a no-additional-code solution.


An AIO pump running flat out will draw 25W all by itself. An idle CPU can be below 100mW (Intel ... AMD idle powers are slightly higher).

Setting your AIO pump to static full power will greatly increase the idle power consumption of the machine.


And?


Looks pretty cool, the self-calibration routine is very nice too.

My only worry is that rapid changes in pump speed might cause extra mechanical stress or wear on the pump, but I have no data to back that up. I've just heard that water pumps sometimes behave in counter-intuitive ways - e.g: sometimes running at a higher speed is better for longevity than a lower one.


It would have been neat to include cpu freqency in your charts along side temperature and other things.


Don't know if someone mentioned it or not so I just drop it here: https://getfancontrol.com/


In conclusion, this is why Systems (Thermal) Control is a profession.

Not dissing on the author's efforts, quite the contrary! But they demonstrate the rabbit hole that is second order effects (like multi-fan beat frequency) and number of parameters to take into account (like "... A solution to [when to enable Passive Mode] may be to detect if the computer is in use (mouse movements)")


Who has time for all this rigamarole. Just use an ARM CPU.


Just buy a large AIO water cooler. Replace the included fans with Noctua. That is the full story of how I made my computer silent despite having a CPU with a TDP of over 200W.


Didn't read the article, did you?


Yes?


Because OP uses a (mid-sized, but large by most standards) AIO with two Noctua redux PF-12 1700 PWM's.

So... your recommendation is the article.


Did you read my comment? I said buy a large AIO and then don’t do the rest of the article and then it actually is quiet with no effort. Large.


Oh, c'mon, you weren't this specific. And I was. A 240mm rad is large by normal standards. Sure, a 360mm one is larger, but also usually not needed and you are likely to run into clearance issues.


I mounted it outside the case. Lots of cases have little cutouts to facilitate this. The fact you are sucking hot air into the radiator is probably not helping you.

360mm isn't needed, unless you want it to be quiet...


I have 8 Noctua fans in my PC and I can tell you they are not silent at 100%. Are they annoying at full power? Not really. But they aren't silent. Thus, fan curves are applied so that when air movement is not required, they aren't running at full speed.


[dead]


[flagged]


Please don't respond by breaking the site guidelines yourself. That only makes things worse.

https://news.ycombinator.com/newsguidelines.html


I deny doing this. I provided actual counterexamples of how there is complexity in this topic in the post above.


Information is valid. Swipes (your final 'graph) aren't.

See the first three (or four) guidelines for comments:

<https://news.ycombinator.com/newsguidelines.html>

Cross those and you're going to get flagged and moderated. Keep crossing that line and you'll be banned.


[flagged]


Please don't respond by breaking the site guidelines yourself. That only makes things worse.

https://news.ycombinator.com/newsguidelines.html




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: