Dell D400

Intel® Pentium® M Processor 725

Wbudowany w laptopa procesor Intel Pentium 725 jest drugim modelem z rodziny Pentium-M ('Dothan'), różniący się od pierwszego modelu powiększoną dwukrotnie pamięcią cache L2 oraz procesem technologicznym - dzięki wykonaniu go w technologi 90nm procesor, mimo znacznie większej ilości tranzystorów w porównaniu do poprzednika, pobiera o ponad 3W energii mniej.

Najważniejszym elementem różniącym procesor Pentium-M od ówczesnych CPU montowanych w urządzeniach przenośnych jest moduł zarządzania energią. Dzięki technologi SpeedStep, procesor może dynamicznie zmieniać zegar w zależności od obciążenie i przyjętego profilu pracy. Pozwala to na znaczne oszczędności energi, czyli wydłużenie pracy na baterii.

W systemie Linux technologia SpeedStep jest od dłuższego czasu obsługiwana przez kernel. W celu jej uruchomienia należy ją wkompilować podczas przygotowywania kernela, będź też załadować odpowiedni moduł.

Aby włączyć obsługe SpeedStep w kernel serii v2.6 należy w pliku konfiguracyjnym uaktywnić następującą opcję:

CONFIG_X86_ACPI_CPUFREQ=y CONFIG_X86_SPEEDSTEP_CENTRINO=y CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y

Kernel v2.6 udostępnia nam pare dodatkowych narzędzi pozwalających na wydajną kontrole procesora.

Profile pracy procesora

Wybierając odpowiedni profil pracy procesora mamy możliwość ustawienia modelu pracy procesora: czy bardziej nam zależy na wydajności, czy też na jak najdłuższym czasie pracy na bateri/cichym działaniu komputera. Do wyboru mamy szereg profili:

  • PERFORMANCE - największa wydajność; maksymalne zużycie energii
  • USERSPACE - możliwość ręcznej kontroli częstotliwości pracy zegara
  • POWERSAVE - najmniejsza wydajność; minimalne zyżycie energii
  • ONDEMAND - częstotliwość 'na rządanie'
  • CONSERVATIVE - częstotliwość 'na rządania'

W przypadku komputera przenośnego najbardziej interesujące wydają się profile 'ONDEMAND' i 'CONSERVATIVE'. Różnica między nimi polega na sposobie zmian częstotliwości w razie potrzeby. Profil 'ONDEMAND' zwiększa częstotliwość CPU do maksymalnej natychmiast wraz ze wzrostem obciążenia, natomiast 'CONSERVATIVE' podnosi częstotliwość stopniowo. Analogicznie sytuacja wygląda, gdy system jest nie obciążony - 'CONSERVATIVE' zmniejsza zegar natychmiast, natomiast druga opcja robi to stopniowo.

Profile można zmieniać podczas pracy systemu, jednakże ich ilość zależy od opcji wkompilowanych w kernel:

CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

Kontrola nad profilami jest zapewniona poprzez szereg ustawialnych 'plików' w wirtualnym systemie plików 'sys'. Można tam m.in. sprawdzić jaki obecnie jest używany profil, zmienić profil, ustawić minimalą i maksymalną częstotliwość i tak dalej...

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ondemand # echo "conservative" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1600000

Dodatkowo istnieje możliwość wkompilowania tablic statystyk, które informują jak często system zmieniał profil, oraz jak dużo czasu spędził w danym profilu:

CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT_DETAILS=y
# cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state 1600000 880 1400000 16 1200000 64 1000000 76 800000 236 600000 204971 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/trans_table From : To : 1600000 1400000 1200000 1000000 800000 600000 1600000: 0 2 7 6 6 70 1400000: 0 0 1 0 0 1 1200000: 0 0 0 1 0 7 1000000: 0 0 0 0 1 7 800000: 0 0 0 1 0 11 600000: 91 0 0 0 5 0

Ponieważ operowanie na 'plikach' w sys nie jest specjalnie wygodne, powstało wiele programów ułatwiających zarządzanie profilami i częstotliwością pracy procesora, takich jak dla konsoli pakiet 'cpufrequtils', czy wiele apletów dla nakładek KDE czy Gnome.

Oczywiście nic nie stoi na przeszkodzie, żeby zamiast wkompilowania wszystkich opcji od razu w kernel, zastosować mechanizm modułów...