técnico

Consumo excesivo de CPU en VirtualBox

En mi ordenador personal uso VirtualBox para virtualizar y hacer algunas pruebas. Hoy me percaté de que el ventilador de la CPU estaba a tope y el proceso VirtualBox andaba al 100%, pero curiosamente en la máquina virtualizada no estaba haciendo nada.

Tras un rato de búsqueda, parece ser que algunas distribuciones usan un kernel compilado para funcionar a una frecuencia muy alta (1000Hz), como es el caso de CentOS, y tenemos varias alternativas. La que me ha parecido más fácil:

  1. Editar el fichero de opciones de GRUB (en CentOS está en /etc/grub.conf, en otras distribuciones suele estar en /boot/grub/menu.lst).
  2. Buscar la entrada con la que arranca el sistema
  3. Añadir los parámetros de arranque:
    divider=10 clocksource=acpi_pm
    

    Es decir, la directiva kernel debe tener la siguiente pinta:
    kernel /vmlinuz-2.6.18-164.10.1.el5 ro root=/dev/VolGroup00/LogVol00 divider=10 clocksource=acpi_pm
    
  4. Reiniciar la máquina

Y ya está, a disfrutar del silencio de unos ventiladores que no se pondrán en marcha a menos que sea necesario :-)

Hay otros métodos, como recompilar el kernel o usar un kernel específico para máquinas virtuales. Podéis verlos en High CPU usage when running a CentOS guest in VirtualBox.

Clasificado como

Intel 945P Express: una m*

Hago uso del derecho al pataleo y además aprovecho para facilitar la vida a quien busque lo mismo que he encontrado yo a golpe de ratón, aunque demasiado tarde.

Ayer tuve la feliz idea de ampliar mi memoria RAM de 2 GB a 4 GB. Todo era felicidad hasta que vi que al arrancar la BIOS decía que sólo tenía 3,2 GB de RAM instalados... ¿¿cómo?? Sabía de las limitaciones de un sistema de 32 bits para detectar más allá de los 4 GB, pero la BIOS al menos debería detectarlo bien. Pues no.

Después de mucho leer, resulta que mi placa base (una Gigabyte GA-945P-S3) tiene el chipset Intel 945P Express que, en resumidas cuentas, acepta 4 GB de RAM pero sólo es capaz de aprovechar 3.2 GB. Otras placas y chipsets más en condiciones tienen una opción llamada Memory remapping que, por supuesto, este chipset no permite. Así que tengo casi 1GB desaprovechado, igual que mucha gente que tiene este chipset en su placa base.

Nota mental: la próxima vez elegir una placa base después de haber estudiado bien este tema.

Nota mental 2: vaya cacota de placa

Clasificado como

Consigna

Hace ya más de año y medio empecé a trabajar en la Universidad de Sevilla, y después de un tiempo me sorprendió que hubiera un servicio tan usado y que tuviera tan mala pinta a la vez: el servicio de consigna. Para quien no lo conozca, es un servicio destinado a compartir ficheros grandes que por correo electrónico no podrían enviarse.

La consigna que se usaba estaba basada en un software bastante antiguo (QuiXplorer), modificado hasta la saciedad para que tuviera la funcionalidad que se deseaba embutida en una interfaz horrorosa y anti-intuitiva. Cuando me tocó modificarlo un poco para implementar cierta funcionalidad, descubrí que además tenía un código infernal. Tras toquetearlo, el software se publicó con una licencia libre (proyecto tfconsigna) y algunas universidades usaron más o menos su misma base para sus servicios de consigna.

Pues bien, allá por diciembre de 2008 decidí que aquello no podía seguir así y me lie la manta la cabeza. Usando un framework PHP llamado CodeIgniter, muy a lo Ruby on Rails, y teniendo en mente siempre que el nuevo desarrollo debía ser algo muy fácil de usar, salió la nueva consigna de la Universidad de Sevilla.

Las mejoras que introduce respecto a la anterior son muchas, entre ellas:

  • Interfaz amigable, basada en CSS y apoyada en AJAX (jQuery)
  • URLs amigables
  • Barra de progreso de envío de ficheros
  • Control sobre los ficheros enviados si se han realizado autenticándose previamente. Modificación y borrado

Empecé además el proyecto con la intención de publicarlo con una licencia libre, y esta semana finalmente he publicado el código de consigna. La licencia elegida es la Affero GPL 3, por la cual el uso en red del proyecto implica poner a disposición de los usuarios el código del mismo. En la consigna de la US lo hemos hecho en condiciones, colocando el enlace en el pie de cada página:

pie-codigo-consigna.png

El sistema de gestión de proyectos se llama Redmine y también me entretuve montándolo, espero publicar una guía de instalación en breve.

Anuncié la publicación del código en varias listas de correo de gente que pudiera estar interesada, y de la experiencia de poner en marcha el sistema y de publicar el código voy a contar mis experiencias:

Quejas

Cada pocos días se reciben mensajes de usuarios diciéndome que la consigna nueva es una m*****, que no encuentran tal o cual cosa, o que "tienen problemas con dos ficheros" (no dicen qué problema ni qué dos ficheros). Reconozco que hay sugerencias que eran muy razonables y que he implementado finalmente, pero por lo general el tono de estos mensajes es bastante hostil. Creo que al usuario final no le gusta que le cambien lo que conoce, y admito que la atención al usuario es una actividad poco agradecida.

Solucionando los problemas

En más de una ocasión he encontrado/me han informado de un error de consideración en la consigna y me he visto intentando solucionarlo a todo trapo. Por muchas pruebas que hagas antes, siempre surge algún imprevisto, y la solución tiene que llegar a contrarreloj.

¡La usan!

Es muy gratificante ver que, pese a las quejas, la gente hace un uso intensivo de consigna. De hecho se han subido unos 3400 ficheros desde el 20 de abril, día de la puesta en marcha, por la máquina han pasado más de 350GB de datos y actualmente hay 65GB ocupados en el disco.

La publicación del código

labs-consigna.png

A la hora de liberar el código me he encontrado mensajes interesándose por el proyecto, pero también algún mensaje crítico. Pese a todo, considero que es importante haber hecho público el proyecto, porque me obliga a tener más cuidado con todo lo que escribo, ya no soy el único que lo va a ver :). Además, si finalmente a alguien le interesa y contribuye con algo de código o la pone en funcionamiento, habrá merecido la pena.

Clasificado como

Cóctel de fuentes en Thunderbird

Aunque desde que tengo el MacBook he usado Apple Mail (o Mail.app, como prefieras llamarlo) he intentado unas cuantas veces usar Thunderbird. Aunque le falta alguna cosa (varios servidores SMTP, por ejemplo) creo que tiene otras cuantas interesantes.

El caso es que al intentar usar Thunderbird veía los mensajes en texto plano con las fuentes un poco descolocadas: algunas líneas tenían la fuente que yo había configurado (mi bienamada Monaco) y otras tenían otra fuente que identifiqué como Courier, la fuente que Thunderbird tiene configurada por defecto.

Por más que cambiaba las opciones de fuente no tenía éxito, y empecé a sospechar que en Linux pasaría lo mismo... y no me equivocaba, el comportamiento era muy similar. ¿Estaba ante un bug en Thunderbird? No, pero tiene tela la solución...

Personalizar los colores ANSI en iTerm

No puedo vivir sin una ventanita de terminal, ni siquiera en MacOS X :). Así que una de las primeras cosas que instale en su momento fue un emulador de terminal. Después de pedir consejo, acabé usando iTerm, un proyecto libre para conseguir esa preciada ventanita llena de letras con fuente monoespaciada.

Tiene muchas cosas buenas (gestión de pestañas, "bookmarks", procesado correcto de las teclas especiales, etc), y algunas no tan buenas.

A lo que iba, el viernes me decidí a cambiar el esquema de colores por el que suelo usar en mi ordenador de escritorio, gris claro sobre negro, y vi que tanto el color rojo como el azul eran demasiado oscuros y costaba distinguirlos del fondo. En la página de iTerm se asegura que se pueden personalizar los colores ANSI, pero no encontraba dónde se hacía... al menos en la versión que uso, la 0.9.6.1021.

Finalmente, encontré la opción un poco escondida. Está en Bookmarks -> Manage Profiles, y dentro en el apartado Display Profiles -> Default. Aquí queda dicho por si alguien se está volviendo loco como yo lo estaba XD.

iterm-profile-ansi.png
Clasificado como