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.
Mostrando entradas con la etiqueta energía. Mostrar todas las entradas
Mostrando entradas con la etiqueta energía. Mostrar todas las entradas
sábado, diciembre 09, 2006
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.
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 :-(
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.
#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.
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.
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
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
Suscribirse a:
Entradas (Atom)