home |
electronics |
toolbox |
science club |
tuxtalk |
photos |
e-cards |
online-shop
Computer CPU fan cleaning
We have one computer that sits in the corner of the office and it's running most of the time.
I had not opened it for the last 5 years and it was just working without any problems. However when
I logged in a couple of days ago I noticed these kernel messages:
Sep 29 21:58:52 [kernel] [48996.286843] CPU1: Core temperature above threshold, cpu clock throttled (total events = 1)
Sep 29 21:58:52 [kernel] [48996.286847] CPU5: Core temperature above threshold, cpu clock throttled (total events = 1)
Sep 29 21:58:52 [kernel] [48996.286852] CPU4: Package temperature above threshold, cpu clock throttled (total events = 1)
Sep 29 21:58:52 [kernel] [48996.286856] CPU0: Package temperature above threshold, cpu clock throttled (total events = 1)
...
That's a CPU fan clogged with dust!
Here is what it looked like when I opened it (first picture before cleaning, second picture after cleaning):
A solid fabric like sheet of dust between the fan and the CPU heatsink. The fan blows down onto the aluminum heatsink
and the edges on top of the aluminum blades are flat. This causes dust to sit there and form a solid
sheet of dust. They should have made pointed edges on these aluminum blades. I think it would have
prevented the dust from forming a solid sheet that blocks all the air-flow. There would be some dust just as there was dust on the
motherboard but it would never clog the aluminum heatsink completely.
I took a vacuum cleaner and a soft paint brush to clean the computer and now it's running again without overheating. I will keep this in mind the next time I buy a desktop PC. It should be possible to design
heatsinks such that they can handle dust better.
Linux: Monitoring CPU temperature
The Linux software lm-sensors can monitor all kinds of sensors inside your computer but there is a simple way to show the CPU temperature:
The virtual file /sys/class/thermal/thermal_zone0/temp contains the CPU temperature of the in °C*1000.
This prints it in °C:
cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000 " C"}'
Example:
root@lenie:~# cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000 " C"}'
38 C
© 2004-2024 Guido Socher