jci's blog

Earthquakes can't stop the rock

« Kids, let your parents read this :: Some cat kicked the cable »

Escrito el 10/20/07 02:26:13 am por jci

And the music should play again

Categories: GNU/Linux, Friday Rant, Fotografia, Ubuntu

Despues de una agitada tarde de llamados, mails, caidas de servicios y otras piñuflerias de la vida cotidiana, con la gente de Ubuntu-cl, nos fuimos a maltratar un rato. Y por supuesto, a comunicarle al resto de la gente que somos una tropa de elementos vivos de marketing. Si, me refiero a las poleras :-)

La conversacion fue variada. Sobre todo, comentar acerca de por que el agua golpea las mesas cuando es lanzada de una altura no despreciable para apaciguar los animos de algunos contertulios. Bueh, talla interna. :B

En mi busqueda de cachureos electronicos y musicales, di con un par de tiendas a algunos pasos de donde vivo. Pero prometo no ir para alla. La advertencia va para Franco tambien.

Desde ya un par de semanas atras instale Gutsy en mi maquina de escritorio (Zaphod) para ya empezar a dejar de usarla como un Media Center. La mision, usarla para grabar musica.

Si, musica. De esa que se toca con instrumentos y echando mano a cualquier hack que se tenga a mano.

Claro que no todo puede ser color de rosas.

Hace algunos años, componia en una cosa llamada Cakewalk Pro Audio, un sistema multipista para Audio y Midi. Como no tenia una tarjeta de sonido decente (Crystal Audio), MIDI era una real calaña. Pero si eras el afortunado poseedor de algun tarro que tuviera un procesador Pentium, podias echar mano al Wavesynth de Yamaha, que no era mas que un programa que emulaba un puerto MIDI por software, usaba su propio set de parches para instrumentos (similar a la Gravis Ultrasound) y lo mejor de todo, no habia parte en internet donde no estuviera con su respectivo crack. Y en Windows.

Group Shot
Even in your wildest dreams you'll see that brand

Pero ya el tiempo ha pasado, me he puesto mas quisquilloso, deje de usar Windows para lo esencial y me vino el bicho de grabar alguna estupidez al azar. Aqui comienza, el Friday Rant de hoy.

Follow up:

Cuando grabas musica usando algun programa, debe compartir el tiempo de CPU con otros programas ya residentes. Aparte, si agregas a la mezcla el uso de I/O (ojala, intensivo) tienes como resultado un PWNeo de esos de los buenos.

Algo que he venido apreciando desde hace algunos meses en Ubuntu.

No me malinterpreten, no es para cambiarme de distribucion. Pero si detecte hace un tiempo que el uso intensivo de CPU mas un I/O de los mil carajos hace que la maquina se sienta lenta. Peor aun, tirarle un apt-get upgrade es un martirio. Y de que hablar de tratar de hacer musica.

IMG_1155.JPG

Encontre por casualidad Rosegarden hace un par de años. Hice algunos experimentos en MIDI, usando algo similar a Wavesynth, llamado Timidity. Como dije, lo que hace en teoria es simular un dispositivo de MIDI y redireccionar los mensajes, armar con una serie de parches sonidos y esos tirarlos a la tarjeta de sonido correspondiente.

Y eso *ya* es una operacion CPU-I/O intensiva. Asi que hacer Alt-Tab mientras escuchaba los grandes exitos de Johann Sebastian Bach era un no-no.

Kruegered!

Nunca pude encontrar la razon del por que. Pero me tincaba que algo debia estar relacionado con un antiguo PWN que tuve antes de una charla.

Ahora, un poco de lata de Sistemas Operativos.

Si un proceso ocupa su tiempo en realizar una operacion de I/O, lo mas seguro es que el kernel (cualquiera sea) le brinde una cantidad adicional de tiempo, a costa del resto de los procesos. Eso era el comportamiento que tenia en los tarros que tengo. Pero no quiero eso. Definitivamente.

El otro asunto es que si un proceso es CPU intensiva, tambien el kernel intentara darle un poco de tiempo adicional.

Pero desde hace un tiempo, nos vienen contando del kernel preemptivo. En buen chileno, es simplemente la capacidad del kernel en decidir que si un proceso va a ser CPU intensivo o I/O intensivo, poder cambiar su prioridad ad arbitrarium. Y ya que los procesadores y la velocidad de disco se hace cada vez mas absurdamente lenta, se les brinda prioridad a ellos, en desmedro de los otros. Llamese, el desktop. O el mouse. Diablos, odio cuando eso pasa.

Para coordinar todo ese cuento, el kernel usa un sistema de ticks de reloj. En los kernels de Ubuntu, por lo general, un tick es 1/250 de segundo, lo cual en operaciones de alta "responsibidad" (notese, grabar audio) es *LEEEENTOOOOOOOO* como el solo. Varios programas usan este reloj para sus operaciones (lease, audio).

Lo pude comprobar usando Ardour con Jackd. Si uso una latencia de 512, el sistema aun "responde", pero con severas pegadas de audio, pops/clicks/garbles de por medio y por supuesto, no puedo hacer Alt-Tab!

IMG_1147
I can now type my name. In lowercase.

Ya no estoy para recompilar kernel. Ese era yo hace unos años atras, cuando no tenia USB al arranque, o cuando me piteaba particiones completas tratando de instalar algun exotico sistema de archivo (oh, que tiempos aquellos del XFS cuando no estaba en la rama oficial, donde perdi el primer respaldo de mi tesis, junto con un par de GB de mp3). Estoy mas viejo, algo mas eficiente (jurai) y mucho mas mal genio.

Y mi solucion se llamo "linux-rt".

Mirando las opciones de compilacion de la imagen linux-generic y linux-rt de Ubuntu, me di cuenta de un mayusculo detalle. Mayusculo.


jci@zaphod:/boot$ more config-2.6.22-14-generic | grep CONFIG_HZ
# CONFIG_HZ_1000 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ=250
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y

...mientras que...


jci@zaphod:/boot$ more config-2.6.22-14-rt | grep CONFIG_HZ
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000

1/1000 de segundo versus 1/250. Son 4 veces de diferencia.

Ahora, no se pasen el rollo que les va a arreglar la vida con el I/O. De hecho, la opcion de 1/250 de la imagen -generic les garantiza que la CPU va a estar ocupada 1/4 del tiempo con respecto a la -rt. Y eso, mis queridos teleescushas es 1/4 de tiempo menos de uso de la CPU. Lean, las baterias de los laptops duran mas, ya que se usa menos voltaje para alimentar la CPU.

Como el mundo de Zaphod no es el de los laptops, le embuti de una el kernel rt.

El cambio fue *DRASTICO*.

Una, por que no es mas rapido. Pero si el sistema responde absurdamente mas rapido ante operaciones de alto I/O. Y alta CPU. Lease, Jackd y grabar audio.

Gracias al consejo de un amigo, voy a explicar levemente que es Jackd.

IMG_1010.JPG

ESD (Enlightenment Sound Daemon) es un sistema de audio en el cual las aplicaciones se cuelgan a el para reproducir...ehm, audio. A diferencia de tener que usar la API del kernel (buena suerte), la API de ESD es en bastante mas alto nivel como para reproducir un sonido. ESD existe por defecto en GNOME.

Ahora, tenemos tambien ALSA. Es otro martirio con otro nombre. Pero es una manera unificada de una interfaz de bajo nivel para las tarjetas de sonido. Antes, existia OSS (Open Sound System), que termino pasando de *Open* a *Closed* (en serio). La arquitectura de ALSA sirve de termino de los datos de ESD.

Pero ESD es excesivamente basico. Algunas veces, dos aplicaciones no pueden colgarse al mismo tiempo de el (creo que ya no pasa) y una de ellas deja de reproducir audio. Este sintoma es el mas comun de todos.

Ahora, Jackd es una arquitectura multimedia un poco mas de alto nivel que ESD. Y su mejor ventaja es que brinda baja latencia. Es decir, si algo entra al subsistema Jackd, tendra que salir de la manera mas rapida hacia la tarjeta de sonido.

Equipamiento

Y no solo eso. Se puede conectar un sistema MIDI y realizar una salida usando Jackd. Si, asi de absurdo. Se puede con un sistema de plugins para convertir audio en TIEMPO REAL (siempre y cuando la fuerza y el kernel acompañen). De hecho, solo de ocioso, conecto Jackd para ser de salida para un generador de tonos que manejo desde un CTK-691 :D

Mejor aun, se puede conectar con un juguete llamado LADSPA, que provee mas efectos. Transformaciones de audio en tiempo real. :)

Si alguno de ustedes ocupo Cubase VST, creo que entendera lo que digo. Ese programa *SI* que comia CPU.

Para evitar la lata, antiguamente podia usar Ardour con latencia de 512. Ahora...de 2048. En español? Si hay un defase de 2048 ms (2.8 segundos) recien se notaria. Antes era, forzosamente de 0.5 segundos). 4 veces la diferencia.

zomg!

Y son las mismas 4 veces del famoso CONFIG_HZ del kernel.

Asi que si tienen desktops, echenle una mirada al kernel -rt. Eso si, creo que anda como las reverendas con NVidia :B

1326 views » 4 feedbacks »

4 comments

Comment from: Tecnoman [Visitor] Email · http://wena pelao !
mira como es la cosa , JCI marketeando jajaja Ubuntu lover :D.

Un abrazo lokillo cuidate harto..



10/20/07 @ 07:37
Comment from: Franco Catrin [Visitor] Email · http://www.tuxpan.com/fcatrin
hahah cuando te vaya a visitar vamos a ir a ver a tus vecinos si o si ;)

Sobre el tema del audio. Ignoro como funciona en otros sistemas pero siempre me ha parecido que hay "over-engineering" en el maneo de audio en Linux, problema que finalmente se traspasa al usuario: killall esd y cosas por el estilo.

Lo de tu excesivo I/O no lo he notado, supongo que desactivaste trackerd.
10/21/07 @ 14:54
Comment from: Lucho [Visitor] Email · http://lfernandez.net/blog/
Hola, a proposito del marketeo a mi me interesa la merca ... donde consigo poleras?

Saludos
10/27/07 @ 13:21
Comment from: lecaros [Visitor] Email · http://lecaros.wordpress.com
la merca es conmigo :D

no había leído este post... newsfox se fue al patio de los callados hace rato... era la procastinación coqueteándome todo el día.

sl3
10/31/07 @ 14:28

Leave a comment


Your email address will not be revealed on this site.

Your URL will be displayed.
PoorExcellent
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)

Acerca de este glob

On the Sixth Day, there was a Running Man looking for a Predator to stop a Raw Deal with a Commando. Only True Lies were said. But nao, Junior is about to get Twins, with the help of a Kindergarden Cop. That will be the Terminator of all struggles.

Archives