I was interested to compare the performance of quad core CPUS in the T400. Here are the results of a benchmark on the Q9000, Q9100, and QX9300. Hopefully this is useful to those thinking about doing the quad mod.
I used sysbench for all of these benchmarks. As far as I understand, sysbench simply runs a PRNG and counts the number of numbers generated per second (events per second). For each CPU, I ran the benchmark for 1200 seconds with 4 threads. I generated the charts and tables by averaging the relevant data for each of the benchmarks.
The tests were all done on the same T400 with the ATI graphics heatsink and the cooling mod. The main test machine was using Parabola/XFCE with XFCE’s power manager running. I believe the test machine I set up is representative of a “normal” linux environment.
You should note that this test setup will not necessarily be representative of the actual performance you’ll get on your machine during daily use. The most notable difference between the testing situation and normal use is that I removed the old CPU and repasted a new one for each test. You may notice that MX-4 thermal paste remains quite fluid for some time after application. Leah pointed out to me that MX-4 is actually slightly worse than other thermal pastes until it sets; which can take two weeks. Your thermals should therefore be a bit better (by a few degrees) once the paste actually sets in.
The main takeaways seem to be as follows:
EDIT: Commit 9938fa14b1bf54db37c0c18bdfec051cae41448e fixed a bug impacting intel speedstep. With that fix, the quad cores experience much higher performance. With my latest builds from git I found that the performance difference between the Q9100 and QX9300 shrank hugely. I also chose to omit the tests done on the T9800 CPU, as those were not redone after the speedstep fix.
I decided that a “control” benchmark was probably useful for others reading this guide. I don’t have another T400 with a dual-core kicking around though. I did however, build a T500 for a buddy out of my spare parts a few months ago because he had no money. That unit, therefore has all of the basics that a librebooted T* would have. The T500 has a T9800, no cooling mod, and MX paste fully set. The T9800 is additionally, the best dual-core available for librebooted thinkpads. The T9800 results show the “best case scenario” for a dual-core stock libreboot machine.
Test | T9800 | Q9000 | Q9100 | QX9300 |
---|---|---|---|---|
Avg. Score | 2144.98 | 2959.69 | 3353.36 | 3748.48 |
Avg. Power (W) | 34.9 | 40.5 | 44.9 | 48.1 |
Avg. Temp (C) | 68.9 | 57.9 | 75.3 | 73.8 |
Price (USD) | $22 | $35 | $60 | $75 |
I used this script to gather all of the data presented above:
#!/bin/bash
# Script requires: sysbench gawk bash
rm bench.log >/dev/null 2>&1
runtime=1200
interval=2
echo "starting benchmark"
Bench(){
sysbench cpu --threads=$threads --time=$runtime --report-interval=$interval run
}
Get_info(){
while read -r line; do
case $line in
\[*s*\]*)
power=$(awk '{print $1*10^-6 "W"}' /sys/class/power_supply/BAT1/power_now)
bench=$(awk '/\[.*\]/ {print $2 " " $7}' <<<$line)
temp=$(awk '{print substr($1,0,length($1)-3) "°"}' /sys/class/thermal/thermal_zone0/temp)
printf "%s\n" "$bench $temp $power"
esac
done
}
Run(){
Bench | Get_info >> bench.log
}
sleep 2
(sleep $((interval+1)) && tail -f bench.log) &
threads=4
echo "running with 4 threads"
Run
threads=2
echo "running with 2 threads"
Run
kill 0