Comment 5 for bug 751689

I went poking around the BIOS (I also have the most up to date BIOS for my x201s: 1.34) and noticed something called 'Advanced Thermal Management'. It was set to 'Maximum Performance' when on A/C. I changed this to 'Balanced' (which is what is used on battery) and the situation is considerably improved, but not solved. I have gathered more information:

Fan speeds (observed by setting the level manually in /proc/acpi/ibm/fan):
auto: ~4500rpm max (but may be lower depending on temperature)
level 6: ~4500rpm
level 7: ~5300rpm
disengaged: ~6500

CPU speeds:
lowest: 1199 MHz
highest: 2134 MHz

To monitor:
$ watch -n 0.5 'cat /proc/acpi/ibm/thermal ; cat /proc/acpi/ibm/fan | egrep "(speed|level):" ; cat /proc/cpuinfo | grep MHz'

Eg:
$ watch -n 0.5 'cat /proc/acpi/ibm/thermal ; cat /proc/acpi/ibm/fan | egrep "(speed|level):" ; cat /proc/cpuinfo | grep MHz'
temperatures: 65 0 0 0 0 0 0 0
speed: 4501
level: auto
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 1199.000

Kernel thermal zones: aiui, this controls cpu scaling:
$ cat /sys/class/thermal/thermal_zone0/trip_point_*
100000
critical
91500
passive

When set to 'balanced', the BIOS will scale the CPU back way before 91.5C (at 83C it immediately scales back to 1199 MHz). The trip point appears to not mean anything (except to suggest that things aren't critical until we are at > 91.5).

I turned thinkfan off and set the fan to 'auto' (the default) and I then went about trying to stress the machine:
$ apt-get install stress
$ stress -c 8 -i 8 -m 8 -d 8

With this load, the system was able to manage itself ok. The fan ever only got up to 4500rpm, but when the temperature got to 83C, the cpu scaling kicked in and the temp dropped to 72C. After a bit the CPUs would go back to 2134MHz and the temperature would raise again, then the cpus would be scaled back, and on and on.

So 'stress' was not good enough. What was good enough was doing 3 builds of kde4libs/amd64 concurrently (in an ecryptfs encrypted HOME). After a rather long while (ie all the dependencies are installed, configure is done, the .moc files are generated and the compilation kicks goes for several minutes), the 4500rpm speed of the fans with the CPUs all at their lowest speed is not enough and the temperature very slowly rises.

For now, I am adjusting thinkfan to run at level 6 (ie, the fan speed equivalent of 'auto') starting at 70C and level 7 at 85C and above (ie run the fan at the highest controlled speed (but still higher than 'auto') when the temperature is still rising after the cores are running at their lowest speed). This configuration has not been extensively tested, but I will report back if level 7 is not sufficient and the fans need to go disengaged.