Mostrando entradas con la etiqueta ahorro. Mostrar todas las entradas
Mostrando entradas con la etiqueta ahorro. Mostrar todas las entradas

sábado, diciembre 09, 2006

Administración de la energía IV: Suspensión II

Ok, ya lo he conseguido...

echo 524288000 > /sys/power/image_size

/usr/local/vbetool/sbin/vbetool vbestate save > /delme
sync ; echo -n platform > /sys/power/disk; echo -n mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool vbetool post
/usr/local/vbetool/sbin/vbetool vbestate restore < /delme

rm /delme

/etc/rc.d/init.d/console start


Puede que necesites pulsar alguna tecla porque habrá saltado el protector de pantalla.

viernes, diciembre 08, 2006

Seguimos con el ahorro: El disco duro

Para activar el ahorro de energia en el disco necesitamos hdparm:
make
make binprefix=/usr/local/ manprefix=/usr/local/ install

Probemos hdparm -I /dev/hda

/dev/hda:

ATA device, with non-removable media
Model Number: FUJITSU MHV2040AT
Serial Number: NS9CT5925NAG
Firmware Revision: 00000096
Standards:
Used: ATA/ATAPI-6 T13 1410D revision 3a
Supported: 6 5 4
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 78140160
device size with M = 1024*1024: 38154 MBytes
device size with M = 1000*1000: 40007 MBytes (40 GB)

Capabilities:
LBA, IORDY(cannot be disabled)
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = ?
Advanced power management level: 128 (0x80)
Recommended acoustic management value: 254, current value: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
Power-Up In Standby feature set
* SET_MAX security extension
* Automatic Acoustic Management feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* SMART error logging
* SMART self-test
* IDLE_IMMEDIATE with UNLOAD
* SMART Command Transport (SCT) feature set
* SCT LBA Segment Access (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
not supported: enhanced erase
40min for SECURITY ERASE UNIT.
HW reset results:
CBLID- above Vih
Device num = 0 determined by the jumper
Checksum: correct

Y ahora hdparm -Tt /dev/hda

/dev/hda:
Timing cached reads: 1412 MB in 2.00 seconds = 706.00 MB/sec
Timing buffered disk reads: 80 MB in 3.02 seconds = 26.53 MB/sec

Aplicamos hdparm -d1 -c3 -m16 -M128 /dev/hda

Volvemos hacer hdparm -Tt /dev/hda
Timing cached reads: 1484 MB in 2.00 seconds = 741.98 MB/sec
Timing buffered disk reads: 80 MB in 3.01 seconds = 26.56 MB/sec

Realmente no se nota el cambio. Pero el hdparm nos sistema para suspender el disco duro con la opción -Sn, donde n * 5 de segundos de inactividad para suspender el disco.

Administración de la energía IV: Suspensión

Para suspender:
sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state

El Q25 suspender se suspender, pero al despertarlo no se enviende la pantalla. Buscado por he encontrado una utilizadad vbetool que permite encender y apagar la pantalla.

Para compilar vbetool necesitamos las PCI Utils:
sed -i 's/null ;/null 2>\&1 ;/' update-pciids.sh
make PREFIX=/usr/local/pciutils
make PREFIX=/usr/local/pciutils install

install -v -m 755 -d /usr/local/pciutils/include/pci
install -v -m 755 -d /usr/local/pciutils/lib
install -v -m 644 lib/libpci.a /usr/local/pciutils/lib
install -v -m 644 lib/*.h /usr/local/pciutils/include/pci

Para el update-pciids.sh, que actuliza la base de datos de lspci, necesitamos wget (ya lo tenemos) y which:

cat > /usr/local/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/local/bin/which
chown -v root:root /usr/local/bin/which

Actualizamos la base de datos: /usr/local/pciutils/sbin/update-pciids

Ahora instalamos vbetool:
./configure --prefix=/usr/local/vbetool

Editamos el Makefile: y en CPPFLAGS añadimos -I/usr/local/pciutils/include y buscamos todos lo sitios donde ponga $(libdir)/libpci.a lo reemplazamos por /usr/local/pciutils/lib/libpci.a

make
make install

Probamos...

sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool dpms on

Pero no funciona :-(

Administración de la energía IV: Hibernación

Para hibernar el Q25 hay que hacer:
#Amplio la imagen a mis 1,25 Gbytes: (1024 + 256) * 1024 * 1024

echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state

Para que al arrancar vaya al swap para recuperar, editar /boot/grub/menu.lst y en la opciones kernel añadir resume=/dev/hda3 (mi partición swap). Así es como quedaría:
kernel (hd0,1)/boot/bzImage-2.6.18.3 root=/dev/hda2 ro resume=/dev/hda3

Al volver la consola no recupera el tipo de letra correcto, para recupelarla: /etc/rc.d/init.d/console start.

Para que todo se automático creo el script:
echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state
/etc/rc.d/init.d/console start

El comando sync vacía los buffers del disco.

jueves, diciembre 07, 2006

Administración de la energía III: ACPI

Ya hemos visto el módulo processor.

ac:
al cargar el módulo ac crea un fichero /proc/acpi/ac_adapter/ADP1/state indicando si está conectado a la red eléctrica (on-line) o no (off-line)

thermal:
Crea el directorio /proc/acpi/thermal_zone/THRM con información sobre la temperatura del Q25. El fichero más interesante es temperature que nos indica la temperatura del cpu.

fan:
Crea el fichero /proc/acpi/fan/FAN0/fan, el estado del ventilador.

dock:
Según la documentación del kernel añade soporte para ACPI controle las dock stations.

button:
crea en /proc/acpi/button los directorios lid/* power/* sleep/*. /proc/acpi/button/lid/LID0/state nos indica si está levantada la tapa o no del Q25.

battery:
Crea /proc/acpi/battery/BAT1 con información de la bateria y consumo. El fichero info nos da información de la bateria y state con el estado cargando/descargando, consumo en eso momento y energia almacenada.

Administración de la energía II: Frecuencia del procesador

Vemos a que velocidad corre nuestro procesador:
cat /proc/cpuinfo

cpu MHz : 1594.910

modprobe speedstep-centrino

Esto carga los módulos speedstep_centrino, freq_table, processor

dmesg:
Time: acpi_pm clocksource has been installed.
ACPI: CPU0 (power states: C1[C1] C2[C2])
ACPI: Processor [CPU0] (supports 2 throttling states)

Y crea el directorio /sys/devices/system/cpu/cpu0/cpufreq. En este directorio hay varios ficheros que nos sirve para dar órdenes y obtener información. El que nos interesa es scaling_governor, es aquí donde vamos a decirle cual va a ser la política de frecuencia del procesador. Por defecto hemos decidido que sea performance, que significa que el procesador irá a 1,6 Ghz. Tenemos 4 políticas:
a) performance. Mayor frecuencia de procesador siempre. 1,6 Ghz
b) powersave. Menor frecuencia de procesador siempre. 600 Mhz
c) userscape. La frecuencia que queramos dentro del rango: cat scaling_available_frequencies
d) ondemand. Según la demanda.
e) conservate. Según la demanda pero enfocado al ahorro.

Las politicas que podemos utilizar están en el fichero scaling_available_governors. Por defecto sólo está performance. Yo utilizo conservate, así pues, modprobe cpufreq_conservative y lo activo: echo -n conservative > scaling_governor

Volvemos hacer cat /proc/cpuinfo
cpu MHz : 600.000

A mayor frecuencia mayor consumo y mayor calor disipado

Lamentablemente no se puede poner por defecto la política conservative, así pues habrá que hacer un guión de arranque que lo haga.

Administración de la energía I

Con las opciones de kernel de administración de la energía nos permite ver el consumo el Q25, cuanta batería queda, modificar la frecuencia de procesador, suspensión e hibernación, y demás opciones de ahorro de la energía.

Hibernación:
Power management options (ACPI, APM) ->
[*] Power Management support
[*] Software Suspend
(/dev/hda3) Default resume partition

/dev/hda3 es mi partición swap, esta debe ser el doble, al menos, de la memoria RAM que tenga el Q25. Yo tengo 1,25 G y una swap de 3 G

ACPI:
Power management options (ACPI, APM) ->
[*] Power Management support
ACPI (Advanced Configuration and Power Interface) Support ->
[*] ACPI Support
[*] Sleep States (NEW)
<M> AC Adapter
<M> Battery
<M> Button
<M> Generic Hotkey
<M> Fan
<M> Dock
<M> Processor
<M> Thermal Zone (NEW)

Frecuencia del procesador:
Power management options (ACPI, APM) ->
[*] Power Management support
CPU Frequency scaling --->
[*] CPU Frequency scaling
<M> CPU frequency translation statistics
[*] CPU frequency translation statistics details
Default CPUFreq governor (performance) --->
--- 'performance' governor
<M> 'powersave' governor
<M> 'userspace' governor for userspace frequency scaling
<M> 'ondemand' cpufreq policy governor
<M> 'conservative' cpufreq governor
<M> Intel Enhanced SpeedStep
[*] Use ACPI tables to decode valid frequency/voltage pairs (NEW)
[*] Built-in tables for Banias CPUs (NEW)

Ok, salimos guardamos y compilar...

Lo instalamos los módulos. Esto hace que perdamos el driver de la tarjeta wifi, lo cual entramos en las fuentes del driver y... make install