Ahorrar energía del portátil (iBook)



Uno de los aspectos a solucionar para ahorrar la batería de los
portátiles
es hacer que el disco se ponga en reposo lo antes posible. Suele
ser
difícil de lograrlo, sobre todo en sistemas
con journaling.
Aquí describo las
técnicas y trucos que ayudan a lograrlo, y aunque están explicadas sobre los cambios hechos
a un Apple iBook con
Ext3
, sirven para cualquier otro Linux.

Aunque no interese el ahorro de energía, otra ventaja adicional es que prolongaremos bastante la vida del disco
duro, ya que los discos de portátiles no están diseñados para funcionar de forma continua, aunque se alimente de la red.

English version
Lo primero que hay que notar cuando se usa un sistema de ficheros con
journaling, como el ext3, es que los daemons, como el noflushd, que
retrasan las operaciones de escrituras
en disco de los bloques modificados, no tienen nada de efectividad en el
Ext3 o ReiserFS
.
Ésto se debe a que el sistema operativo escribe regularmente al diario
(journal
o log)
del sistema de ficheros independientemente.
Yo me estuve “peleando” bastante tiempo con el ext3, pensaba que era todo
culpa
suyo, el disco no paraba, y como en el iBook la única pieza en movimiento es el
disco y la CPU casi no calienta, todo el ruido (en realidad muy poco) y el calor
generado proviene del disco.
En mi configuración de hasta hace unos días había deshabilitado el ext3 y
había
vuelto al ext2 con el noflushd, donde lograba mejores resultados. Pero resulta
que era el noflushd el que enmascaraba de alguna forma la generación de salidas
“innecesarias” (mi portátil no es un servidor 🙂 del syslogd y la generación
de estadísticas del NTP. Además, como uso la red wireless con un servidor DHCP
en el punto de acceso, cada vez que se
renueva la IP se generaban varias líneas
de logs. Éste último punto lo resolví primero incrementando el período de
leasing
del dhcpd, pero queda intrínsicamente solucionado con lo que explico
en este artículo.

En resumen, lo que vamos a hacer básicamente son tres cosas:

  • Indicar al sistema que no mantenga la última fecha de acceso a los ficheros
    y directorios (noatime).
  • Minimizar las líneas de logs del syslogd.
  • Impedir que otros programas manengan logs independientes, especialmente
    el ntpd
    en su configuración original.
  • noatime
    Por defecto, el sistema de ficheros almacena en el i-nodo del fichero la
    fecha
    de último acceso a los ficheros. Eso quiere decir que cada vez que leemos un
    fichero se genera una operación de escritura. Si no nos interesa mantener esa
    información (normalmente no interesa), podemos indicar al sistema que no lo
    haga. Para ellos ponemos la opción “noatime” en el /etc/fstab para cada uno de
    los sistemas de ficheros “reales” en los discos (i.e. no hay que hacerlo
    con el /proc o el swap). Por ejemplo:

    # /etc/fstab: static file system information.
    #
    /dev/hda4 / ext3 defaults,noatime 0 1

    syslogd
    En el syslogd se generan muchas líneas que normalmente no nos interesan en un
    portátil, así que eliminé la mayoría de las que se generan periódicamente, como
    mensajes de la red wireless, renovación de IPs, el crond que verifica si hay que
    ejecutar algo cada minuto, etc. etc. Aquí tenéis como he dejado mi syslogd.conf,
    pero debo decir que es bastante radical.
    Veréis que las cosas que generan
    mensajes más frecuentemente lo envío al /dev/null y a las demás les agrego el
    signo “-” al principio del nombre de cada fichero para evitar que el syslogd
    haga el fsync luego de cada línea (que en realidad no ayudan mucho con un
    sistema con journaling, pero sí lo hacen con un ext2).

    # /etc/syslog.conf Configuration file for syslogd.
    #
    # For more information see syslog.conf(5)
    # manpage.

    #
    auth,authpriv.* /dev/null
    *.*;auth,authpriv.none /dev/null
    cron.* /dev/null
    daemon.* /dev/null
    *.=debug;\
    auth,authpriv.none;\
    news.none;mail.none /dev/null
    *.=info;*.=notice;*.=warn;\
    auth,authpriv.none;\
    cron,daemon.none;\
    mail,news.none /dev/null

    kern.* -/var/log/kern.log
    lpr.* -/var/log/lpr.log
    mail.* -/var/log/mail.log
    user.* -/var/log/user.log
    uucp.* -/var/log/uucp.log

    #
    # Emergencies are sent to everybody logged in.
    #
    *.emerg *

    daemon.*;mail.*;\
    news.crit;news.err;news.notice;\
    *.=debug;*.=info;\
    *.=notice;*.=warn |/dev/xconsole

    ntpd y otros programas
    A pesar de haber hecho todo lo anterior, todavía encontraba con el “vmstat
    3”
    que había operaciones de escritura bastante frecuentes. Me puse a
    estudiar casi cada programa en funcionamiento y aquellos que se arrancan con el
    crond. Cuál fue mi sorpresa ver que el ntpd generaba ficheros de
    informaciones estadísticas.
    Aseguraros que el ntpd.conf las siguientes líneas estén comentadas (o
    borradas)
    para evitar las estadísticas y forzar a que escriba a través del syslogd.

    #statsdir /var/log/ntpstats/

    #statistics loopstats peerstats clockstats
    #filegen loopstats file loopstats type day enable
    #filegen peerstats file peerstats type day enable
    #filegen clockstats file clockstats type day enable

    Otras programas “peligrosos”

    Hay además otros programas y daemons que generan salidas y logs
    en otros ficheros y que hay que controlar. No puedo
    dar una receta general porque depende
    de los paquetes que tengáis instalados y la configuración de los mismos. Algunos de los más comunes son:

    • exim: el exim también genera logs cada vez que se ejecuta
      para revisar si hay trabajos pendientes en la cola. Por defecto se ejecuta cada 15 minutos, yo lo he cambiado a que lo haga cada hora en /etc/crond.d/exim.

    • cups: escribe periódicamente en /var/spool/certs/.
    • modutils: El paquete modutils tiene un script
      que se ejecuta periódicamente desde /etc/cron.daily/modutils, /sbin/insmod_ksymoops_clean que genera ficheros de logs en /var/log/ksymoops.

    Final
    Para acabar, sólo decir que verifiquéis con el vmstat que el sistema no está
    escribiendo al fichero. Dicha información está en la columna bo
    (blocks out)

    Y que tenéis configurado el control de energía como
    indico en otro artículo. Con
    lo explicado aquí y en el artículo anterior, seguramente lograréis que las
    baterías de vuestro iBook aguanten hasta 5 horas, o más

    Me quedan sólo 5 horas y 20 minutos de batería 🙂

    Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1510 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.