Linux gaat groen
Ben nooit zo’n voorstander geweest van daemons om processor frequency scaling te gaan regelen en bij wat onderzoek blijken deze ook niet nodig te zijn gelukkig. De Linux kernel kan geheel zelfstandig voor dit je regelen en bespaart dus ook weer op geheugen en processortijd. Gelukkig is het opzetten niet zo bijzonder lastig en op Debian moet je alleen package sysfsutils installeren voordat je begint.
Als eerste stap is het laden van de module welke de processor kan aansturen om de snelheid aan te passen. In mijn geval is dat p4-clockmod omdat ik nog een oudere Pentium 4 processor heb, maar als je zoekt in de directory /lib naar de directory cpufreq dan kon je andere modules ook tegen. De andere module is cpufreq_ondemand en waarom wordt later duidelijk.
Plaats deze modules in /etc/modules:
p4-clockmod
cpufreq_ondemand
Nu moet nog worden duidelijk gemaakt welke policy er gebruikt moet worden als de machine opstart. En hoewel dit per processor-core is in te stellen heb ik dit alleen gedaan voor cpu0, omdat cpu1 een hyperthread is en daarmee afhankelijk is van cpu0. Het is dus belangrijk om dit voor elke fysieke processor-core in te stellen. Een tweede wat ik heb ingesteld is een ondergrens, want mijn huidige processor doet er te lang over om de snelheid te verhogen. Dit is een probleem in de Pentium 4 processoren en lijkt 1200 MHz een goede snelheid als ondergrens, maar moderne processoren zouden hier geen last van moeten hebben.
Plaats de regels in /etc/sysfs.conf:
devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 1200000
Nu is het enige wat nog nodig is is een reboot om alles te activeren of je met de aanpassingen met de hand activeren, maar een reboot is vaak makkelijker. Je zal in /proc/cpuinfo nu de actuele snelheid van je processor zien. En als je hier vanaf wilt dan zet overal een hash-teken voor en reboot.
Maar waarom geen daemon en alleen de policy ondemand? Er wordt gesteld dat de snelheid moet worden beperkt vanwege hitte productie, maar dit is iets wat de kernel moet oplossen en ook daadwerkelijk doet gelukkig. Zeker als je bedenkt dat een kernel altijd alle triggers heeft om dit te bewerkstelligen, maar ook de juiste prioriteiten heeft om dit uit te voeren waneer het nodig is. Een proces in userland kan bijvoorbeeld niet de juiste prioriteit krijgen of toevallig naar disk zijn verplaatst omdat het geheugen nodig was.
Een andere stelling is dat een lagere snelheid altijd bespaart, maar is dat wel zo? De mensen van lesswatts.org hebben er een mooi voorbeeld over wat misschien nog wel wat wenkbrauwen zal doen fronzen. Daarbij wil je je performance beperking en zeker nu de tickless kernel zijn intrede heeft gedaan om de processor zoveel mogelijk in idle-stand te brengen om daadwerkelijk energie te besparen.

Recent Comments