Realtime en Debian, Ubuntu y derivados

Asumiendo que ALSA y un kernel realtime ya están instalados, modifíquese el sistema de seguridad PAM para permitir a usuarios normales operar con software en modo de alta prioridad —tiempo real o realtime, si se prefiere así—. En un sistema basado en Debian, edítese /etc/security/limits.conf como root y añádanse estas líneas:

  @audio - rtprio 95  @audio - memlock 512000  @audio - nice -19

Se trata de la sugerencia de Florian Schmidt y es válida sólo como punto de partida, si bien debería ser adecuada para la mayor parte de los sistemas. El valor rtprio es la máxima prioridad con la que un usuario del grupo audio puede ejecutar una tarea. El valor memlock es la máxima cantidad de memoria que un miembro del grupo audio puede bloquear para una tarea siendo ejecutada en tiempo real. Debería ser inferior a la máxima cantidad de memoria física; siendo una recomendación común establecerla a la mitad exacta. El valor nice es el mínimo con el que una tarea puede ser ejecutada; se trata de la predisposición de una tarea a liberar tiempo de CPU. Estos valores permitirán a jackd, ardour, y otras aplicaciones sensibles al tiempo real, correr con altas prioridades. Aún sin embargo hay algo más que hacer.

El paso final es establecer unas cuantas prioridades de tareas. El parche para tiempo real debería haber creado varias tareas IRQ, así como una tarea hrtimer. Pueden visualizarse con ps -e. Utilícese el comando chrt para establecer dichas prioridades. En Debian, forma parte del paquete schedutils. No importa el orden en el que se establecen. Búsquese en la salida del comando ps -e tareas con nombres como softirq-timer o softirq-hrtimer, tomándose nota del pid de cada una de ellas. En un sistema core dual debe haber dos de cada, una por cada CPU. Búsquese el pid de la tarea IRQ en la que reside la tarjeta de sonido. La salida de cat /proc/interrupts debería revelar este dato. Establézcanse nuevas prioridades para cada tarea.

  chrt -f -p 99 6  chrt -f -p 99 12  chrt -f -p 99 818  

Esto debe establecer una prioridad de tiempo real a las tareas identificadas como 6, 12 y 818. Una prioridad tan alta como 99 podría no ser en realidad necesaria e incluso un tanto insegura. Juéguese con los valores hasta encontrar los adecuados. Estos comandos son los últimos que deben ser cambiados, y los que permiten a los temporizadores del kernel operar a una prioridad mucho más alta, dando latencias del planificador de tareas mucho más satisfactorias.

Estas prioridades serán restablecidas después de cada reinicio, así que deberá crearse un script de inicio sencillo para recuperarlas, dado que los pids no van a cambiar. Un comando como chrt -f -p 99 `pgrep softirq-timer` bastará para localizar los hilos.

Ahora ya es posible empezar a grabar, pero con tamaños de trama mucho menores en jackd, mucha menos latencia, y ningún xrun. ¡A disfrutar!

Nota sobre APIC: En placas bases con APIC y kernels donde APIC está habilitado, pueden tenerse dificultades al establecer prioridades en las IRQ. Símplemente iníciese la máquina con la opción noapic en grub para el kernel utilizado, y compruébese si desaparecen los problemas.

Visto en el Low latency howto de AlsaProject.

¿Te pareció interesante? Sé tan amable de menear este artículo.

Debian kernel Linux realtime Ubuntu

Bookmark and Share votar

4 Respuestas to “Realtime en Debian, Ubuntu y derivados”

  1. Muy interesabte tu artículo, quería preguntarte como instalar un kernel de baja latencia en mi debian lenny (pentium3, 1.5 gb de ram), puedo de las repos de lenny ????
    Dede ya gracias.

  2. En las repos oficiales de Debian no hay kernel realtime. Pero puedes apuntarte a las listas de correo de Musix y allí te avisarán cuando sus kernels rt estén disponibles. Planeo de cualquier forma compilar mis propios kernels rt según vayan estando disponibles los parches para las nuevas versiones y ponerlos aquí.

  3. Fijate en nuestra web publicamos kernels RT:
    http://www.soundebian.com.ar

    acabo de subir unos cuantos.

    salu2

  4. Pedazo de blog, a mi Reader de cabeza.

Deja una Respuesta

El enlace de tu firma no es válido para los buscadores. Cualquier intento por tu parte de hacer spam no tendrá el resultado esperado. Haz un comentario interesante y contribuye a la discusión.