StApostol wrote:
Wow, nice!
Could you please post how you did this? I'm interested but I have no idea how to proceed.
Yes, the result is good so far. With the silent profile and undervolting, it seems the main noise under use is the hard drive.
Undervolting is a bit technical, but not too complex. The E350 has hardware P-states, from P0 (the highest performance one) to P2 (lowest performance). P0 is 1.6GHz, P1 is 1280MHz, P2 is 800MHz. Each P-state is described by a MSR register with an Idd estimate in A, a frequency and a voltage.
P0 MSR is at address C0010064
P1 MSR is at address C0010065
P2 MSR is at address C0010066
If you use Linux Gnome cpu frequency applet, you can toggle by hand each cpu core to one of the P-state.
A MSR register is 64 bits. In a P-state MSR, bits 15 to 9 are the Vid (The highest the Vid, the lowest the voltage).
So, for example, P0 MSR for my dm1z is 0x8000012600002810
Starting from last, 10 is the frequency, and 0x28/2 = 0x14 is the Vid. Undervolting consist of raising the Vid by writing a new value in the MSR register.
I used the wrmsr and rdmsr commands to do that, and I started to increase the Vid.
# Now, P0
sudo wrmsr -p 0 0xC0010064 0x8000012600002A10
sudo wrmsr -p 1 0xC0010064 0x8000012600002A10
#Significant jump!
sudo wrmsr -p 0 0xC0010064 0x8000012600003010
sudo wrmsr -p 1 0xC0010064 0x8000012600003010
#Significant jump again! Lock up
sudo wrmsr -p 0 0xC0010064 0x8000012600003810
sudo wrmsr -p 1 0xC0010064 0x8000012600003810
# Smaller jump. OK
sudo wrmsr -p 0 0xC0010064 0x8000012600003210
sudo wrmsr -p 1 0xC0010064 0x8000012600003210
# Smaller jump. OK
sudo wrmsr -p 0 0xC0010064 0x8000012600003410
sudo wrmsr -p 1 0xC0010064 0x8000012600003410
And I stopped there for P0. I set P1 to the same value (since, by default, Vid is almost the same). I went a lot deeper with P2, never reaching a lock up point.
Each time, to set a new value, I switch with the frequency applet both cores to another state, write the MSR registers, switch the cores back to the P-state I'm working on, and check if the values have been correctly applied with:
sudo rdmsr -p 0 0xC0010071
sudo rdmsr -p 1 0xC0010071
In this register, the current Vid is in the same position as in the MSR, and the number just before (0, 1, or 2) is the current P-state. So it's easy to check that the changes have been applied.
Quote:
What values did you reach? Is there a measurable difference in load temps? I have a power meter so we could cross-reference our results (they won't be very accurate but better than nothing).
Finally I reached the following :
#P0 ViD 0x1A (original 0x14)
#P1 ViD 0x1A (original 0x15)
#P2 ViD 0x35 (original 0x26)
P2 has a huge decrease. In P0 and P2 (the ones I tested with burnMMX) you see a decrease of a few degrees, more in P0; up to a point that for P2 it would hardly trigger the fan ramp up with two burnMMX running. At full load on P0, it would decrease system power by a few Watts.