
Intel – bo taka właśnie płyta główna zagościła w moim nowym serwerze stała się bodźcem do popełnienia tego wpisu. Płytka tania, za 200zł można bez problemu kupić fabrycznie nową. Ja nabyłem w tej cenie używaną, ale za to od razu z kością 1GB 800MHz i kartą WiFi, co było dla mnie bardziej na rękę .
Płyta wykonana jest w formacie MiniITX, czyli zaledwie 17×17cm. W sumie mniejsza niż w moim (już niedługo) tablecie. Posiada procesor Intel Atom 330 (2 rdzenie, 4 wątki (HT), 64bit), grafikę GMA950, dźwięk od Realteka, jeden slot DDR2, jeden kanał IDE i dwa SATA. Do tego Gigabit Ethernet i standardowy zestaw złącz (wraz z RS232 i LPT) na tyle. Do tego zgodnie z datasheetem całość (z dyskiem ATA 3.5″, ramem i WiFi na PCI) pobiera aż 35 watt. Nieźle, co? Idealne pod budowę nettopa, bądź domowego serwera (czyli jak w moim przypadku).
Wpis jednak poświęcę walce z tą płytą, jaką przeżyłem na własnej skórze. Otóż, tak to jest jak najpierw się kupuje, później czyta.
Producent postanowił wyposażyć ją w chłodzenie aktywne. Na większym radiatorze kręci się mały (4cm) wiatrak. Tyle że do najcichszych on nie należy. Eksperymenty z odcięciem mu prądu, a nawet z wymianą radiatora na ten z Artic Cooling Copper Silent nie dały mu rady, temperatura leciała w górę, tylko w wolniejszym tempie. A teraz ciekawostka: pod większym radiatorem znajduje się… chipstet – Intel 82945G. Atom siedzi sobie spokojnie z boku pod radiatorem o połowę mniejszym. A dlaczego? Atom ma TDP równe 8W, zaś chipset – 25W. Gdzie tu sens i logika? Nie ważne, skoro już kupiliśmy, trzeba coś z tym zrobić.
Jako, że sprzęt jest bezpośrednim następcą kayaka (HP Kayak XU800 robił dotąd za serwer), oczywiście pracuje on na Linuxie. Jest to (niestety) Ubuntu 10.10, jednak z przejściem na Debiana Wheezy amd64 ociągam się do czasu zakupu nowego HDD (120GB ATA to malutko…). Stąd też wszystko odnosi się do Linuxa i nie wiem jak sprawa wygląda na innych systemach operacyjnych.
W sumie kilka faktów:
– Atom 330 nie posiada SpeedStepa, a więc pracuje cały czas na 1.6GHz (to samo tyczy się jednojajowego 230)
– lm-sensors domyślnie nie wykrył nic.
– Bios potrafi sterować wiatrakiem przez PWM w zakresie 50-100%
– Chipset jest wersją desktopową, więc układ graficzny ma taktowany na 400MHz, w odróżnieniu do 166 w wersji GM
A teraz czas je obalić
I. Atom 330 i zmiana taktowania
Generalnie, temat jest banalnie prosty. Potrzebujemy do tego moduł p4_clockmod (powinien być w jądrze dystrybucyjnym, w wypadku własnej kompilacji nie zapomnijmy o nim) oraz daemon powernowd. Cała zabawa sprowadza się do załadowania modułu
root@kayak:/home/kitor# modprobe p4_clockmod root@kayak:/home/kitor# powernowd powernowd: PowerNow Daemon v1.00, (c) 2003-2008 John Clemens powernowd: Found 2 scalable units: -- 2 'CPUs' per scalable unit powernowd: cpu0: 199Mhz - 1599Mhz (8 steps) powernowd: cpu1: 199Mhz - 1599Mhz (8 steps) powernowd: cpu2: 199Mhz - 1599Mhz (8 steps) powernowd: cpu3: 199Mhz - 1599Mhz (8 steps) root@kayak:/home/kitor#
I co, da się? Proc zależnie od obciążenia chodzi sobie w zakresie 200-1600MHz. Pozostaje jedynie dopisać p4_clockmod w /etc/modules.
Kolejna sprawa, lm-sensors.
Problem wynikł z upierdliwości modułów odpowiedzialnych za działanie sensorów. Generalnie aby wszystko zaczęło działać (odczyt temperatur obu rdzeni oraz obrotów wentylatorów) musimy:
1. Dodać acpi_enforce_resources=lax do commandline jądra.
2. Załadować moduły coretemp oraz smsc47m1
3. Dopisać sobie w pliku /etc/sensors3.conf następujące linie:
chip "smsc47m1-*" # SMSC LPC47M10x, LPC47M13x, LPC47M14x and LPC47B27x chips # We don't set the fan mins by default anymore because they may not exist # when using the Linux 2.6 driver (since we respect the original chip # configuration). set fan1_div 8 set fan1_min 1000 set fan2_div 4 set fan2_min 1500 label fan1 "Chassis Fan" label fan2 "Chipset Fan"
Teraz ouptut z sensors wygląda tak:
root@kayak:/home/kitor# sensors coretemp-isa-0000 Adapter: ISA adapter Core 0: +27.0°C (crit = +90.0°C) coretemp-isa-0001 Adapter: ISA adapter Core 1: +26.0°C (crit = +90.0°C) smsc47m1-isa-0680 Adapter: ISA adapter Chassis Fan:3072 RPM (min = 999 RPM, div = 8) Chipset Fan: 0 RPM (min = 1498 RPM, div = 4) ALARM
Alarm przy wiatraku chipsetu wynika z tego że mam podpięte je na odwrót.
Sterowanie wiatrakiem przez PWM
Tą funkcję w BIOSie można w ogóle wyłączyć. Tyle że będzie wył na maksimum obrotów przy starcie systemu. Bo skoro już mamy odczyt obrotów, to czemu by i nimi nie sterować?
Potrzebujemy do tego pakietu fancontrol. Po instalacji wywołujemy komendę pwmconfig. Przykładowy output:
root@kayak:/home/kitor# pwmconfig # pwmconfig revision 5770 (2009-09-16) This program will search your sensors for pulse width modulation (pwm) controls, and test each one to see if it controls a fan on your motherboard. Note that many motherboards do not have pwm circuitry installed, even if your sensor chip supports pwm. We will attempt to briefly stop each fan using the pwm controls. The program will attempt to restore each fan to full speed after testing. However, it is ** very important ** that you physically verify that the fans have been to full speed after the program has completed. Found the following devices: hwmon0/device is coretemp hwmon1/device is coretemp hwmon2/device is smsc47m1 Found the following PWM controls: hwmon2/device/pwm1 hwmon2/device/pwm2 Giving the fans some time to reach full speed... Found the following fan sensors: hwmon2/device/fan1_input current speed: 4237 RPM hwmon2/device/fan2_input current speed: 0 ... skipping! Warning!!! This program will stop your fans, one at a time, for approximately 5 seconds each!!! This may cause your processor temperature to rise!!! If you do not want to do this hit control-C now!!! Hit return to continue: Testing pwm control hwmon2/device/pwm1 ... hwmon2/device/fan1_input ... speed was 4237 now 0 It appears that fan hwmon2/device/fan1_input is controlled by pwm hwmon2/device/pwm1 Would you like to generate a detailed correlation (y)? y PWM 255 FAN 4237 PWM 240 FAN 4388 PWM 225 FAN 4237 PWM 210 FAN 4237 PWM 195 FAN 4237 PWM 180 FAN 4237 PWM 165 FAN 4096 PWM 150 FAN 3963 PWM 135 FAN 3963 PWM 120 FAN 3840 PWM 105 FAN 3723 PWM 90 FAN 3510 PWM 75 FAN 3413 PWM 60 FAN 3413 PWM 45 FAN 3072 PWM 30 FAN 2925 PWM 28 FAN 2792 PWM 26 FAN 2730 PWM 24 FAN 2792 PWM 22 FAN 2671 PWM 20 FAN 2671 PWM 18 FAN 2614 PWM 16 FAN 2671 PWM 14 FAN 2507 PWM 12 FAN 2507 PWM 10 FAN 2507 PWM 8 FAN 2409 PWM 6 FAN 2234 PWM 4 FAN 2234 PWM 2 FAN 0 Fan Stopped at PWM = 2 Testing pwm control hwmon2/device/pwm2 ... hwmon2/device/fan1_input ... speed was 4237 now 4388 no correlation No correlations were detected. There is either no fan connected to the output of hwmon2/device/pwm2, or the connected fan has no rpm-signal connected to one of the tested fan sensors. (Note: not all motherboards have the pwm outputs connected to the fan connectors, check out the hardware database on http://www.almico.com/forumindex.php) Did you see/hear a fan stopping during the above test (n)? y Testing is complete. Please verify that all fans have returned to their normal speed. The fancontrol script can automatically respond to temperature changes of your system by changing fanspeeds. Do you want to set up its configuration file now (y)? y What should be the path to your fancontrol config file (/etc/fancontrol)? Loading configuration from /etc/fancontrol ... Select fan output to configure, or other action: 1) hwmon2/device/pwm2 3) Change INTERVAL 5) Save and quit 2) hwmon2/device/pwm1 4) Just quit 6) Show configuration select (1-n): 2 Devices: hwmon0/device is coretemp hwmon1/device is coretemp hwmon2/device is smsc47m1 Current temperature readings are as follows: hwmon0/device/temp1_input 26 hwmon1/device/temp1_input 25 Select a temperature sensor as source for hwmon2/device/pwm1: 1) hwmon0/device/temp1_input 2) hwmon1/device/temp1_input 3) None (Do not affect this PWM output) select (1-n): 1 Enter the low temperature (degree C) below which the fan should spin at minimum speed (20): Enter the high temperature (degree C) over which the fan should spin at maximum speed (60): Enter the minimum PWM value (0-255) at which the fan STOPS spinning (press t to test) (100): 2 Enter the minimum PWM value (2-255) at which the fan STARTS spinning (press t to test) (150): 4 Enter the PWM value (0-2) to use when the temperature is below the low temperature limit (0): 2 Enter the PWM value (2-255) to use when the temperature is over the high temperature limit (255): Select fan output to configure, or other action: 1) hwmon2/device/pwm2 3) Change INTERVAL 5) Save and quit 2) hwmon2/device/pwm1 4) Just quit 6) Show configuration select (1-n): 5 Saving configuration to /etc/fancontrol... Configuration saved
Po tym można odpalić fancontrol:
root@kayak:/home/kitor# Loading configuration from /etc/fancontrol ... Common settings: INTERVAL=10 Settings for hwmon2/device/pwm1: Depends on hwmon0/device/temp1_input Controls hwmon2/device/fan1_input MINTEMP=20 MAXTEMP=60 MINSTART=4 MINSTOP=2 MINPWM=2 MAXPWM=255 Enabling PWM on fans... Starting automatic fan control...
Aby startował automatycznie, polecam dopisanie do /etc/rc.local, nie ma on swojego wpisu do init.d.
I ostatnia sprawa, taktowanie GMA
Ta część chyba najbardziej niebezpieczna, bo z palca będziemy modyfikować rejestry układu graficzego.
Tak jak wspomniałem, mobilna wersja układu i945 ma taktowanie ustawione domyślnie na 166MHz. Tam użytkownicy poprzez zmodyfikowane sterowniki, GMABoostera itd kręcą go do 400MHz. My mamy zaś sytuację dokładnie odwrotną – aby nieco zbić z temperatury (i poboru prądu) odkręcimy układ do 200MHz. Wszystko załatwia jedna linijka:
setpci -s 02.0 f0.b=00,60
Ją również możemy dopisać do /etc/rc.local.
Efektem końcowym jest w moim wypadku temperatura średnia niższa o prawie 5 stopni (26 vs 31), oraz względna cisza. Bo prawdziwa będzie dopiero z dyskiem SATA 2.5″ i wymienionym wiatrakiem na porządny i cichy. Ale mimo wszystko różnica między tzw. out-of the box a tym co jest obecnie jest spora.
Komentarze