The Small and Medium heatsinks are this product from Amazon, I cut one of them to different lengths to provide similar dimensions to other heatsinks available for Raspberry Pis. Dimensions of the 2 sizes I cut:
Small Heatsink: 22mm x 24mm x 6mm
Medium Heatsink: 22mm x 45mm x 6mm
Heatsink with 40mm Fan: 34.5mm x 34.5mm x 6mm (22mm tall with fan)
Large Heatsink: 37.5mm x 37.5mm x 33mm
To get the Average Idle Temp I let the Pi settle for at least an hour with the heatsinks attached then recorded the temperature every 1-2 seconds for 60 seconds.
To load up all cores I used a simple one line script that I found on Stack Overflow, it launches 4 instances of dd copying /dev/zero to /dev/null, this creates enough load to use 100% of the CPU and as a result pushes the temperature up, I know its not ideal, but its a quick solution that does what I required. The script I used is below, simply paste in a terminal window and press enter, to exit the script and kill the dd instances just press enter.
fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read; killall dd
The Time till cap at 100% is the time from when I launched the dd instances till the first time the command "vcgencmd get_throttled" shows the CPU has been frequency capped. I was logging the CPU clock speed values from /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq and vcgencmd measure_clock arm and interestingly when frequency capping was reported neither of the values dropped below 1500MHz.
The below tests were done at an ambient room temperature of 18-20° Celsius.
Description | Average Idle Temp | Max Temp | Time till cap at 100% load |
---|---|---|---|
No Heatsink | 59.95°C | 82°C | 3 minutes and 22 seconds |
Small Heatsink | 55.94°C | 82°C | 14 minutes and 15 seconds |
Medium Heatsink | 54.41°C | 81°C | 15 minutes and 39 seconds |
Large Heatsink | 45.55°C | 71°C | Never, ran for 2.5 hours averaging 67.97°C |
Heatsink with 40mm Fan | 34.75°C | 46°C | Never, ran for 2.5 hours averaging 43.03°C |
From the above results it's quite obvious the heatsink and fan performed the best, I think I'll be going with the fan option as even the large heatsink is getting close to the 80° mark.
I'm keen to test some other readily available and preferably cheap heatsinks if anyone has some suggestions feel free to hit me up.