domingo, 28 de octubre de 2012

Entrénate para la vida

En general los invitados del programa "Singulars" de TV3 me parece que no tienen desperdicio, éste por ejemplo, acerca de "cómo la forma de pensar influye directamente sobre los actos y lo que sentimos y cómo entrenando los pensamientos se puede modificar lo anterior" me ha parecido muy recomendable (así de paso lo tengo a mano).



Patricia Ramírez: Entrena't per a la vida

domingo, 14 de octubre de 2012

zram en la Raspberry Pi

Sirva de antecedente que uso la imagen de Arch Linux en la Raspberry Pi.

Hay muchas formas de usar zram, aunque por no estar pendiente de cambios futuros en la configuración de momento me he decantado por usar el servicio de systemd contenido en el paquete systemd-arch-units.

El problema es que dicho script no detecta correctamente la cantidad de procesadores del sistema. Para apañarlo se puede crear un nuevo archivo zramctrl

$ sudo mkdir /etc/systemd/scripts
$ sudo cp /usr/lib/systemd/scripts/zramctrl /etc/systemd/scripts/zramctrl

Se modifica para que no evalue el número de procesadores y se especifica manualmente "cpucount=1":

#!/bin/sh

start() {
  exec awk '
  FILENAME == "/proc/meminfo" && $1 == "MemTotal:" {
    mem_total = (0 + $2) * 1024
    next
  }

  END {
    cpucount = 1
    mem_per_cpu = sprintf("%d", mem_total / cpucount)

    system("modprobe zram zram_num_devices=" cpucount)

    for (i = 0; i < cpucount; i++) {
      print mem_per_cpu > "/sys/block/zram" i "/disksize"
      system("mkswap /dev/zram" i " -L zram" i)
      swapdevs = swapdevs " /dev/zram" i
    }

    system("swapon -p 100" swapdevs)
  }
  ' /proc/cpuinfo /proc/meminfo
}

stop() {
  exec awk '
  FNR > 1 && $1 ~ /^\/dev\/zram[0-9]+$/ {
    activeswaps = activeswaps " " $1
  }

  END {
    system("swapoff" activeswaps)
  }
  ' /proc/swaps
}

case $1 in
  start|stop) "$1" ;;
esac


Parece ser que en la versión del kernel 3.2.x el parámetro del módulo zram que indica el número de dispositivos a crear es "zram_num_devices" aunque posteriormente lo han vuelto a cambiar a "num_devices". Issue 101:     zram.num_devices parameter ignored in kernel 3.2.x

Posteriormente modificamos el servicio zram.service
 
$ sudo cp /usr/lib/systemd/system/zram.service /etc/systemd/system/zram.service

Para que contenga la ruta del nuevo script:

[Unit]
Description=Compressed RAM block devices

[Service]
Type=oneshot
ExecStart=/etc/systemd/scripts/zramctrl start
ExecStop=/etc/systemd/scripts/zramctrl stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Con esto ya podemos probar su funcionamiento

$ sudo systemctl start zram.service

o activarlo para que se inicie automáticamente

$ sudo systemctl enable zram.service