Entorno de acs

March 31, 2005

Evolución del rendimiento de la serie 2.6 del núcleo

Filed under: Sin Categoría — acs @ 9:05 am

En KernelTrap se hacen eco de las medidas de rendimiento de la serie 2.6 del núcleo que se están haciendo con respecto al núcleo de RedHat Enterprise 3 Linux kernel utilizando un programa de medidas de rendimiento basado en transacciones de bases de datos estandar en la industria. Se ha ido degradando el rendimiento para este entorno desde un 1% en 2.6.2 hasta un 11% en 2.6.11, pasando por un 23% en 2.6.8.

Linus ha pedido que se realicen a ser posible este tipo de medidas cada día, de forma que los desarrolladores puedan ir viendo como afectan sus cambios en el rendimiento. Y por supuesto, hay que estar seguros que el entorno de pruebas es reproducible y que sus medidas son las que deben de ser.

Autopackage llega a la versión 1.0 tras más de 2 años

Filed under: Sin Categoría — acs @ 8:56 am

La distribución del software libre ha provocado la creación de las distribuciones, que permite de forma integrada, gestionar la instalación y actualización de software. Hay gran variedad de distribuciones y una de las principales diferencias es la forma de empaquetar el software. RPM y DEB parecen ser ya los dos modelos de empaquetar software que se han impuesto.

Autopackage tiene como objetivo distribuir binarios que puedan ser instalados en cualquier distribución. En un artículo sobre la versión 1.0 podemos ver que la orientación del producto es al usuario final, con un instalador gráfico muy sencillo y buscan establecer un nuevo modelo descentralizado de distribución de software (como en Windows o MacOS), donde la instalación de aplicaciones de terceros no imponga en esto la necesidad de que alguien incluya dentro de los repositorios de Red Hat o Debian u otra distribución su software.

Una buena iniciativa aunque introduce un nuevo sistema de paquetería, nuevas herramientas de resolución de dependencias … veremos cuanto éxito tiene.

Las novedades de SuSE 9.3 de Novell

Filed under: Sin Categoría — acs @ 8:48 am

Rob Love nos cuenta lo contento que está con la inminente salida de SuSE 9.3. A todos nos gusta que nuestro trabajo llegue finalmente a ser usado y entre dichas novedades, SuSE incluye ya toda la pila de componentes necesaria para gestionar el hardware de forma más eficiente: núcleo 2.6.11, HAL, udev y DBUS. Aún no han metido GNOME Volume Manager, desarrollo por el mismo Rob Love, pero el ya ha ha preparado un paquete de actualización de SuSE 9.3 para incluirlo. Ubuntu hace casi ya 6 meses fue la primera distribución en incluir esta pila de gestión de hardware.

El núcleo cada vez más comunicativo

Filed under: Sin Categoría — acs @ 8:38 am

Con la llegada del núcleo 2.6.10 disponemos de una nueva funcionalidad: la emisión de eventos del núcleos a través de un socket netlink. El artista fue Rob Love y su uso no parece muy complicado. Esto va a permitir que los desarrolladores de drivers por ejemplo, puedan comunicar a espacio de usuario información sobre el dispositivo que gestionan. Por ejemplo, una tarjeta wireless puede ir comunicando la evolución de la calidad señal, se puede enviar la temperatura del núcleo o que se ha recibido un ataque de DoS en una interfaz de red.

Este es el código que se incorporó a HAL para poder escuchar este tipo de eventos. En principio este mecanismo no parecía tener intención de sustituir a hotplug, pero parece mucho más rápido: 64 eventos por segundo ha registrado Kay Sievers en sus pruebas. Acostumbrados a la lentitud de hotplug, este camino puede suponer finalmente un claro sustituto mucho más eficiente por donde emitir los eventos de hardware.

March 30, 2005

¡Y Progeny logró sobrevivir!

Filed under: Sin Categoría — acs @ 8:55 am

OSNews me ha resultado esta mañana especialmente interesante. Junto a la entrevista a Alan Cox se hacen eco de la reconversión de Progeny para sobrevivir. En las empresas relacionadas con software libre se han tenido que probar muchos modelos de negocio para vener su viabilidad y personalmente creo que a día de hoy, el desarrollo puro de software libre no es una realidad rentable en el mercado. Es necesario que este desarrollo este encuadrado dentro de modelos de negocio tradicionales que den sustento económico, y no que sea un desarrollo orientado a producir un producto que comercializar, aunque hay casos que jugando con las licencias y teniendo un gran existo (MySQL), se ha logrado tener un modelo de negocio.

En el artículo Ian Murdock comenta los principales errores cometidos con el modelo de compañía original, como contratar a demasiada gente y carecer de experiencia de negocios en la plantilla, algo que he podido vivir también en compañías de software libre aquí en España. Os recomiendo vivamente que leáis el artículo. Está lleno de excelentes consejos y seguro, la historia se volverá a repetir.

Alan Cox: Linux no depende de Linus

Filed under: Sin Categoría — acs @ 8:43 am

A diferencia de lo que parece ocurrir en Firefox con la concentración del desarrollo en unas pocas mentes, no parece ser este el caso del núcleo Linux. Alan Cox comenta en una entrevista a LugRadio (Season 2 Episode 12) que actualmente, Linux no necesita a Linus para sobrevivir e incluso apunta a posibles sucesores. Es muy saludable que ocurran este tipo de cosas. Visto en OSNews. Aún no la he escuchado, pero a la vista de los comentarios, parece que es cierto lo que se destaca en OS News. Y parece que Alan Cox también critica la lentitud de GNOME comparado con Windows XP. Hay mucho trabajo que hacer aún.

Detectores de Fallos para Sistemas Distribuidos Fiables

Filed under: doctorado — acs @ 12:42 am

En la tercera clase de Sistemas Distribuidos del doctorado Sergio Arévalo ha utilizado el artículo Unreliable Failure Detectors for Reliable Distributed Systems (referencia de la publicación en ACM). El objetivo es encontrar un escenario donde utilizando sistemas distribuidos asíncronos (transmisión de mensajes y computación de tareas sin acotación de tiempos) se pueda resolver el problema de consenso.

Para ello se introducen en el sistema distrubuido unos nuevos elementos conocidos como Detectores de Fallos (no fiables). Con su ayuda podremos asegurar que en un sistema asíncrono con Detectores de Fallos, se puede resolver el problema de consenso. La resolución a este problema nos permitirá resolver otros como el radiado atómico, group membership, compromiso atómico y elección de lider (algo que no hemos visto aún hoy).

Los Detectores de Fallos son módulos que se incorporan a cada nodo del sistema distribuido y, tienen como peculiaridad, que se conectan entre sí por un sistema parcialmente síncrono.

El Modelo de Sistema que se plantea para demostrar la resolución del problema de consenso es un Sistema Asíncrono con Detectores de Fallos No Fiables (que se comunican por su red parcialmente síncrona). Existe un conjunto finito de procesos que pueden fallar tipo crash (aún no hemos visto los diferentes tipos de fallos que existen) y que se comunican por canales fiables entre cada par de procesos. Se define un algoritmo en este sistema como el conjunto de los autómatas deterministas, uno por cada proceso. La computación son los pasos que se realizan en el algoritmo que pueden ser: envío, recepción, computación y fallo.

En este Modelo de Sistema se incluye un Detector de Fallos en cada uno de los procesos. Este detector funciona como un servicio que informa a cada nodo de los sospechosos de fallo de los demás nodos (al ser detectores no fiables, hay sospechosos que pueden luego no ser fallos).

El Detector <>P, luego veremos que significa <>P, lo que hace es enviar mensajes de heart-beat a los demás módulos. Tiene unos temporizadores que si vencen antes de recibir respuesta al heart-beat, hacen que el detector marque el nodo como sospechoso de haber fallado. Si luego se recibe la respuesta de heart-beat, se elimina el nodo de la lista de sospechosos y se ajusta el temporizador de ese nodo a un valor mayor. Con este esquema de funcionamiento tarde o temprano se logrará que el valor de los temporizadores sea mayor que la cota del sistema parcialmente síncrono que une a los detectores, y ya no habrá sospechosos que no sean fallos reales.

Sobre los Detectores es fundamental definir dos propiedades que marcan su funcionamiento: completitud (un proceso que falla tarde o temprano sospechamos de él) y precisión (si un proceso no falla tarde o temprano no sospechamos de él). Estas propiedades son complementarias y según como las cumplan un detector, lo clasificaremos de una forma o de otra.

La completitud de un detector puede ser Débil si al fallar un proceso tarde o temprano al menos un proceso correcto sospecha de él, o fuerte si sospechan tarde o temprano del proceso fallido todos los procesos correctos.

Respecto a la precisión, no encontramos con cuatro escenarios: Débil si al menos un proceso correcto no es sospechoso para nadie, Fuerte si todo proceso correcto no es sospechoso para nadie, Débil tarde o temprano y Fuerte tarde o temprano.

De las combinación de las posibiles completitudes y precisiones nos salen 8 posibles Detectores de los que finalmente nos interesan <>P, <>S, <>Q y <>W (competitud fuerte con precisión débil y fuerte tarde o temprano, y completitud débil con precisión débil y fuerte tarde o temprano respectivamente).

                         Precisión
                   Fuerte  Débil  Fuerte ToT   Débil ToT
Completitud  Fuerte     P        S        <>P    <>S
Completitud  Débil Q        W        <>Q <>W

P, Q, S y W son detectores no implementables, por los que son en los otro cuatro en los que nos centraremos. De estos cuatro detectores, vamos a ver que existen ciertas equivalencias entre ellos.

Se dice que un Detector es más fuerte que otro si existe un algoritmo que pueda convertir el detector más fuerte en el más débil. Por definición por ejemplo, P>=Q (es más fuerte). El algortimo sería tan sencillo como seleccionar cualquiera de los procesos correctos que tienen como fallido un proceso sospechosos y tendríamos ya un proceso correcto que sospecha de uno fallido, tal y como pide la completitud débil. Esta misma relación se cumple para: S>=W, <>P>=<>Q, <>S>=<>W. Pero se comprueba también que existen algoritmos de radiado que permiten pasar también de los detectores con completidud débil a detectores con completidud fuerte, por lo que finalmente se dice que hay una relación de equivalencia entre los detectores cuyas relaciones hemos mostrado anteriormente. Es importante indicar que estos algorítmos se ejecutan en el sistema asíncrono.

Como conclusiones de esta clase, comienza a estar muy claro lo que son sistemas síncronos, parcialmente síncronos y asíncronos, de todos los ejemplos que hemos visto en el día de hoy. Vemos como gracias a los detectores de fallos no fiables conectados en un sistema parcialmente síncrono, somos capaces de resolver el problema de consenso en sistemas asíncronos. Un poco de sincronismo en el sistema nos permite pues lograr resultados en los sistemas distribuidos más “salvajes”: los asíncronos.

Eventually consistent failure detectors es un artículo sobre detectores de fallos escrito entre otros por Sergio Arévalo.

March 22, 2005

El viaje a la II GUADEC Hispana

Filed under: Sin Categoría — acs @ 9:49 am

Ayer terminamos de organizar el viaje a la II Guadec Hispana que este año será en A Coruña, y será la antesala de la VI GUADEC en Stuttgart, Alemania.

Vamos en avión, el viaje ida y vuelta cuesta 77€, y allí nos alojamos en un lindo hotel que nos sale la noche en habitación doble a 25€/persona gracias a los bancohotel. Tengo ya ganas de que llegue, lo vamos a pasar muy bien, y va a ser muy interesante. Estoy preparando una ponencia que quiero dar sobre integración del hardware en el escritorio o más bien, como hacer el hardware transparente para el usuario pero útil en el escritorio ;-)

Ahora, a organizar el viaje a Alemania :)

Más detalles sobre el proyecto GNU/kFreeBSD

Filed under: Sin Categoría — acs @ 9:01 am

Después de que con mucho acierto se indicaran las incorrecciones en la información que puse sobre GNU/kFreeBSB me he decidido a leer más sobre el proyecto. El objetivo es que, al igual que Debian/GNU Hurd permitirá ejecutar las miles de aplicaciones de Debian sobre el núcleo Hurd en vez de Linux, el proyecto GNU/kFreeBSD lo permitirá hacer sobre el núcleo de FreeBSD. Actualmente GNOME ya funciona en este sistema de forma bastante razonable.

El mundo de *BSD seguirá de momento siendo un misterio para mi ya que nunca he trabajo con él, aunque por higiene mental y amplitud de miras, en algún momento tendré que probarlo. Además, el soporte de OpenBSD para el hardware wireless está en ocasiones por delante de Linux. En concreto, para mi tarjeta RaLink2500 USB (Conceptronic C54RU).

Desarrollar aplicaciones compatibles con LSB

Filed under: Sin Categoría — acs @ 12:07 am

En los últimos años de mi vida profesional he podido entender la importancia de los certificados y de tener plataformas solidas y estables sobre las que construir las soluciones y apostar por ellas. La inversión a realizar en muchos proyectos, y el tiempo que se tarda en llevarlos a cabo, y el tiempo que se tarda en rentabilizarlos obligan a que aquello que usemos en el proyecto, tenga un tiempo de vida largo.

LSB ha intentado crear esta plataforma sobre la que construir soluciones y hoy, de casualidad, he localizado un artículo en IBM en el que te cuentan como desarrollar aplicaciones compatibles con LSB. Cierto es que a día de hoy no es especialmente importante, LSB aún tiene poca implantación, pero es una de las apuestas claras de futuro en la ordenación del mercado y del mundo en general del software libre. Son 5 pasos los que hay que dar, que imponen limitaciones en tu aplicación, pero a la vez, permiten que tus binarios se ejecuten sin modificar en cualquier plataforma LSB. Se rompe la necesidad de tener que recompilar de código fuente. Una de las claves es que tu aplicación se limite al uso de las librerías que forman parte de LSB: ibc, libdl, libm, libutil, libcrypt, libz, libpthread, libncurses, libX11, libXext, LibXt, libICE, libSM, and libGL (el artículo es algo antiguo, puede que exista alguna modificación). La complejidad comienza cuando no tienes que programar contra las APIs, si no contra las ABIs, que es la interfaz binaria de las librerías, y suele ser poco amigable para trabajar con ella.

Desde el punto de vista de obligar siempre a distribuir el código fuente, el crear capas de compatibilidad a nivel binario puede provocar que el código fuente pase a ser menos necesario, y se pierda el foco en él.

En resumen, un artículo altamente recomendable con el que puedes entender las implicaciones técnicas de LSB, aunque eso sí, te obligará a conocer algo las tripas de las librerías.

Next Page »