lecturas de TodoLinux número 94


Este mes en la sección de noticias no hay mucho que destacar. Hay mucha propaganda de empresa anunciando nuevos productos o proyectos importantes a desarrollar. Como ejemplo un botón (como se suele decir): Sun Microsystems se ha adjudicado un contrato con Correos y Telégrafos para la puesta en marcha del proyecto Apartado Postal Electrónico (APE) con la que la empresa pública pretende dotar a las administraciones públicas y empresas de una plataforma segura y estable para el envío de comunicaciones y mensajes. La presentación del netbook Acer Aspire One es otra de las noticias de este estilo.

Una noticia aparentemente anodina que me ha dado mucho juego es la presentación de los switches Gigabit Ethernet de ASUS. Aparte de ser obviamente sistemas embebidos con procesadores de red (network processors), tienen la particularidad de soportar una cosa que se llama Jumbo Frames. Resulta que consiste en ampliar el tamaño del frame ethernet, determinado por el parámetro MTU de la red de los tradicionales 1500 bytes a los 9000 bytes con el consiguiente aumento del rendimiento de la transmisión y la reducción del procesamiento en origen y destino de las tramas ethernet para los nodos que no tienen descargado ese procesamiento en tarjetas de red con su propio procesador de red. He buscado por la red información sobre este asunto y he encontrado argumentos en contra de su adopción en Internet por que por lo visto afecta negativamente en el rendimiento en redes TCP/IP y su adopción por parte de RedIris (la red académica española) con tres centros de supercomputación que lo han adoptado ya, entre ellos el de Cantabria.

La otra noticia interesante, en mi opinión, de la sección es el anuncio de la publicación de una nueva versión de Alitheia Core del proyecto SQO-OSS (Software Quality Observatory for Open Source Software), que es una utilidad (todavía en fase alfa) cuyo objetivo es ayudar a los desarrolladores de software europeos a incrementar la calidad de su código open source, evaluando de forma científica su calidad. La organización que lo promueve, la SQO-OSS está financiada por empresas y universidades europeas. Creo que merece la pena echarla un vistazo ya que puede ser de utilidad en el proyecto europeo en el que estoy trabajando (MULTICUBE)

Finalmente Intel aparece por partida doble (la misma noticia de propaganda al estilo de la de Sun) En la primera anuncia más de 14 nuevos procesadores en el mercado entre los que destacan los procesadores de cuatro núcleos para móviles y los procesadores que combinan procesadores gráficos de bajo consumo. Todo este tema de los procesadores de bajo consumo y de muchos núcleos tiene un interés evidente por mi trabajo. La segunda noticia es un acuerdo entre Intel y Dreamworks para proporcionar procesamiento de alto rendimiento para la producción de películas de animación en 3D estreoscópico que van a ser la norma a partir del año que viene.

9 comentarios en “lecturas de TodoLinux número 94

  1. El DVD que viene con el último número de la revista es un poco novedoso ya que incluye una distribución de la que no había oído, llamada Linux Mint, a pesar de que como dice el último artículo de la revista, se encuentra en la tercera plaza en la clasificación de distribuciones que realiza distrowatch (al menos cuando se escribía el artículo en la revista; en el momento de escribirlo yo está la cuarta siendo las tres primeras: ubuntu, opensuse y fedora, respectivamente)

    La distribución Linux Mint (ver ficha en distrowatch) es de origen irlandés, está basada en Ubuntu y tiene la particularidad de incluir de serie todos los plugins de navegador web, los codecs multimedia, soporte de reproducción de DVDs, java y otros componentes no libres. Incluye también sus propios menús y herramientas de configuración y un instalador muy sencillo a partir de su carga como LiveCD.

    Entre el software incluido se encuentran aplicaciones como Firefox 3, Transmission, Pidgin, Gimp, GParted, Envy, Brasero, MintBackup, Thunderbird, OpenOffice, RhythmBox, Totem y Tomboy.

    Seguramente la instalaré en una máquina virtual para experimentar un poco con esta distribución.

  2. Siguiendo el sentido contrario de lectura (es decir, empezando por el final) me he puesto a leer los dos interesantes artículos de la sección software linux.

    El primero trata de un framework, llamado PHPmotion, para construir aplicaciones web 2.0 del estilo de youtube con contenidos multimedia (audio y vídeo), perfiles, favoritos, mensajes entre usuarios, comentarios y votos, sección de administración y la posibilidad de adaptar el aspecto y extender la funcionalidad de las aplicaciones. El resultado es como una especie de gestor de contenidos (CMS) multimedia con funcionalidad de web social. Esto puede resultar práctico para web educativas, por ejemplo. Yo he pensado que puedo utilizarla para poner contenidos de audio o incluso de vídeo creados por mí … en un futuro no muy lejano :)

    Los requisitos para poder instalar el framework no son muy estrictos: servidor web, soporte de PHP, servidor de base de datos MySQL, extensiones para ejecutar CGIs, el sistema de control de versiones subversion, el compilador GNU GCC y los paquetes php-dev, ruby y libcurses-ruby. Como se puede ver es una amalgama de diversas tecnologías. También requiere el cambio d configuración del archivo php.ini, básicamente para activar los componentes dinámicos, extender la vida de los scripts, el tiempo de la sesión y el tamaño máximo de los archivos que se pueden subir (que pueden ser muy grandes, del orden de 200 MB)

    El proceso de instalación es bastante laborioso, empezando por la instalación de librerías que en el artículo consta de ocho pasos (p.e para la reproducción de contenidos multimedia: codecs, FLV, mp3, ogg, amr, …) y luego pasando a la propia instalación del framework en 11 pasos más. El artículo incluye una configuración de ejemplo y la creación de un usuario y ejemplos de la subida de un vídeo y de canciones. También se indica cómo crear un grupo y administrar el contenido mediante una sección de la web diseñada al efecto.

    El segundo artículo, primero de una serie de dos, trata de un mecanismo de comunicación entre procesos llamado System V IPC. Se trata de definir zonas de memoria compartida entre procesos. Se reservan segmentos de memoria con un tamaño determinado de páginas para dedicarlos a guardar datos y compartirlos entre procesos. La creación de los segmentos la realiza el kernel a petición de los procesos que solamente reciben una clave que luego deben utilizar para obtener la referencia al espacio reservado. Incorpora mecanismos de sincronización en el acceso como semáforos y colas de mensajes para evitar problemas, como las llamadas condiciones de carrera.

    El mecanismo de compartir memoria de SystemV es un poco antiguo y tiene algunas deficiencias como la inexistencia de monitores, de segmentos de solo escritura para procesos no creadores, o se puede forzar el acceso exclusivo de un segmento después de crearlo para inicializarlo, los tamaños de las colas tienen sus limitaciones, y sobretodo que las abstracciones pertenecen al kernel y no al proceso que las crea. No existe propietario del recurso que pueda liberar el recurso cuando muera. El propietario en realidad es el usuario efectivo que creó el proceso que primero creó la abstracción. Como no hay recolector de basura (recursos reservados que no tienen asociados ningún proceso), estos se quedan ahí hasta que se reinicie la máquina o algún proceso que conozca la clave asociada al recurso lo libere. Hoy en día hay otros mecanismos estandarizados como POSIX IPC (que incluye mecanismos avanzados como mmap)

    Los recursos reservados se pueden gestionar desde la línea de comandos mediante el comando ipcs. En el artículo se dan varios ejemplos con las opciones -m, -tm, -pm y -cm con los que se pueden obtener el listado de los recursos con sus diferentes propiedades (clave, identificador, permisos, usuario y grupo, fecha de acceso, creación y modificación, procesos asociados, …) En la siguiente entrega se aprenderá a manejarlos mediante programa.

    NOTA: He encontrado un par de enlaces que hablan con cierto detalle sobre la técnica de IPCs. El primero, de la Universidad de Cardiff, incluye ejemplos escritos en C de POSIX IPC y el segundo, de la California State University (CSU), se centra el los segmentos de memoria compartida SystemV e incluye también un extenso ejemplo en C.

  3. De nada, Eduardo. Es un placer leer vuestra revista que me mantiene al día en el mundo de Linux y el Software Libre. Gracias a gente como vosotros se mantiene el aire fresco en el mundo del software.

  4. En la sección de Taller Práctico hay como siempre unos cuantos artículos muy interesantes.

    Para empezar tenemos un artículo que nos enseña cómo tener un ordenador con varios sistemas operativos ejecutándose al mismo tiempo y comunicándose entre sí. Esto se logra gracias a la virtualización. Esta técnica permite simular una arquitectura hardware completa, generalmente x86 de 32 o 64 bits (una máquina o PC virtual con su procesador, memoria, tarjeta de sonido, tarjeta de vídeo, conectores USB, etc) sobre la que se puede instalar y ejecutar un sistema operativo completo.

    En el artículo se explica cómo hacer esto con el producto Sun VirtualBox (que tiene una versión open source con licencia GPL) instalado en un Ubuntu 8.04 sobre el que se instala un Windows XP. Se detalla la instalación de VirtualBox tanto en su versión GPL (directamente desde los repositorios de Ubuntu con apt-get install) como la versión PUEL. Luego se explica cómo crear una máquina virtual con el asistente al efecto de VirtualBox. Hay que prestar atención a cosas como la creación del disco duro virtual, eligiendo generalmente la opción más económica que consiste en dotar de forma dinámica de espacio al disco según lo vaya necesitando. Finalmente la instalación del sistema operativo huésped se hace de forma normal como si se tratara de una instalación en otro PC.

    Hay que hacer una mención especial al soporte de USB. Este solamente se encuentra en la versión no GPL. Además hay que habilitarlo ya que Ubuntu no permite por defecto el acceso de las máquinas virtuales a los puertos USB. Hay que editar tres ficheros de configuración: /etc/init.d/mountdevsubfs.sh y /etc/udev/rules.d/40-permissions.rules y /etc/udev/rules.d/40-basic-permissions.rules (por cierto que yo no tengo el último fichero en mi Ubuntu 7.04) Tras editarlos hay que reiniciar Ubuntu. Una cosa que me ha llamado la atención es que si conectas un ratón o disco USB en el sistema huésped (guest), este no se conecta también en el anfitrión (host) Este comportamiento es distinto al de Vmware.

    En el siguiente artículo del taller se tiene la tercera entrega de a serie dedicada al benchmarking de Linux. En esta ocasión se centra la autora del artículo en las medidas de rendimiento en servidores web y bases de datos. Existe un montón de consideraciones que hacer en cuanto a los parámetros que influyen en el rendimiento de las aplicaciones web y cuáles son las que podemos controlar. El ancho de banda de los clientes y de los servidores generalmente suele estar fuera de nuestro control. Los parámetros de configuración del propio servidor sí que podemos controlarlos. También el hardware y software sobre el que corre el servidor web es susceptible de ser mejorado. Se consideran servidores web como el Apache httpd y el Lighttpd. Las aplicaciones que simulan cargas (accesos concurrentes de usuarios) más utilizadas son ab (que es utilizada por el propio proyecto apache) y JMeter. Ambas aplicaciones pueden utilizarse, no obstante, en las pruebas de cualquier servidor web.

    El caso práctico de medida de rendimiento web se hace con la utilidad ab sobre tres casos: imagen de tamaño 100k, archivo de gran tamaño 4 MB y página web dinámica PHP. Se comparan varios servidores web: Lighttpd y tres versiones de Apache (1.4, 2.0 y 2.2) Se simulan 10.000 solicitudes con una concurrencia de 10 (lo cual no es muy realista ya que las peticiones se hacen de forma regular; habría que hacerlas de forma estocástica) Los resultados muestran que no hay tanta diferencia entre los diversos servidores con una ventaja del Lightttpd en ficheros de pequeño tamaño pero superioridad de Apache 2.2 en páginas web dinámicas.

    Finalmente se trata de puntillas el tema del análisis del rendimiento de la base de datos. Aquí, en el caso de MySQL las herramientas que permiten analizar el rendimiento forman parte de la distribución de la BBDD (/usr/share/mysql/sql-bench) Generalmente la optimización de las BBDD pasa por un buen diseño del modelo de las tablas, entidades y relaciones de la misma y de los índices para las consultas.

  5. El tercer y último artículo del Taller Práctico trata de la segunda entrega en la serie de artículos dedicados al kernel de Linux. En esta ocasión se trata el tema de las gestión de procesos. El proceso es la unidad básica de ejecución de aplicaciones en Linux. Las hebras o hilos (threads) y aalgunas funciones del kernel también se manipulan como procesos. Para ver la lista de procesos en ejecución hay que teclear en la consola ps ax. Cada aplicación puede tener uno o más procesos (por ejemplo el apache tiene varios) Cada proceso se caracteriza por un número único llamado PID.

    La diferencia entre los procesos y los hilos o hebras (threads) es que los primeros solo ven su memoria. Los segundos comparten un mapa de memoria virtual, el del proceso padre que los lanzó. Luego cada uno tiene su propio hilo de ejecución concurrente. Esta solución de threads es conveniente para el caso en el que varias tareas concurrentes se intercambien constantemente el procesador y se intercambien gran cantidad de información entre ellas. La programación concurrente con threads es más compleja pero el intercambio de datos es el más rápido posible.

    En linux existe un concepto threads especial que son los kernel threads, que comparten el espacio de memoria del kernel. Realizan tareas y funciones muy específicas que suelen requerir muchos ciclos de reloj y se gestionan como procesos (para empezar tienen un PID propio) Aparecen entre corchetes en el listado de procesos con ps.

    Los conceptos más interesantes del artículo son los de planificador de procesos y los algoritmos de planificación. El planificador de procesos se encarga de gestionar el procesador y dar a cada proceso un tiempo (slice) para que se ejecute en el mismo. Linux utiliza una técnica llamada multitarea apropiativa. El planificador retira al proceso del procesador cuando se ha cumplido el tiempo que tenía asignado (también puede retirarse cuando realiza una operación de entrada/salida o de interacción con el hardware) El algoritmo de planificación que utiliza Linux es el de round robin multinivel con prioridades dinámicas. Linux se caracteriza por un cálculo de la prioridad dinámica muy rápido gracias a un sistema de matrices de prioridades.

  6. El artículo de portada trata el proyecto Mono, una implementación open source y libre de la plataforma .net de Microsoft, que tiene parte de su infraestructura publicada como estándares de ECMA e ISO y otra parte propietaria y bajo patentes. Esta circunstancia ha hecho levantar suspicacias sobre la naturaleza del proyecto, que se ha llegado ver incluso como un caballo de troya en el mundo de Linux. La plataforma .net es una plataforma alternativa a la plataforma java de Sun Microsystems. Las dos ofrecen la ejecución de aplicaciones multiplataforma a partir del concepto de máquina virtual. La de Microsoft permite el uso de más de un lenguaje de programación (siendo C# su lenguaje de referencia)

    El proyecto fue iniciado por el desarrollador mexicano Miguel de Icaza, que además era uno de los fundadores de una empresa llamada Ximian, dedicada al desarrollo del escritorio y aplicaciones GNOME. Al final la empresa fue adquirida por Novell en uno de sus movimientos estratégicos hacia el open source (el otro más notorio fue la adquisición de la empresa alemana que desarrollaba la distribución Linux SuSe)

    En el artículo se describen por encima la arquitectura y componentes de la implementación .net del proyecto mono. Además de el compilador de C# y el runtime encargado ejecutar el código (entre otras cosas), se incluye la librería básica de clases (basic class library) para las funcionalidades comunes cono el acceso a base de datos, comunicaciones en red, etc. También se incluye una librería específica de clases, de cosecha propia, para utilizar GTK+ (GTK#), OpenGL, LDAP, etc.

    A la hora de desarrollar aplicaciones con interfaz gráfica en Linux podemos utilizar los llamados bindings como el GTK#, Qyoto o wxNET. En el artículo se indica el estado del proyecto, que va por su versión 1.9. Destaca el uso de una doble licencia (como la gran mayoría de proyectos open source), una licencia GPL/LPGL para el compilador y herramientas de C# y las librerías runtime y otra licencia MIT para las librerías de clases. Ya existen aplicaciones desarrolladas utilizando el framework que proporciona Mono como: F-Spot, Tomboy, Beagle o Diva. Incluso en SecondLife quieren utilizar Mono para desarrollar un compilador del LSL (Linden Scripting Language) Para completar se dispone de un entorno de desarrollo (IDE) llamado Mono Develop para desarrollar aplicaciones en C#.

    El artículo de la revista detalla la instalación del framework de Mono en Ubuntu, incluyendo la herramienta Mono Develop y muestra una simple aplicación de ejemplo (el clásico “Hola Mundo”)

  7. En la zona de iniciación de habla del programa F-Spot, que como hemos visto está hecho con Mono. Este programa esta pensado para recoger las fotos de las cámaras digitales, cosa que hace gracias a la librería gphoto2. La aplicación, por otra parte se comunica con el escritorio utilizando el mecanismo D-Bus. La aplicación se puede ampliar mediante un mecanismo de extensiones (plugins) Existen repositorios de estas extensiones desde los cuales podemos descargar algunas ya hechas.

    La fotos importadas se guardan en una base de datos propia. A partir de ahí, se puede navegar y buscar entre las fotos por fechas o por etiquetas, que se pueden poner a las fotos como una información más. También se pueden hacer ediciones de las imágenes, con la finalidad de corregir defectos aplicando filtros y efectos. A la hora de sacar o exportar las fotos podemos optar por exportarlas en un formato XHMTL, que pueden colgarse directamente en un servidor web. También se puede exportar las fotos a un servicio web como flickr o picasa (que son los más conocidos pero también están 23hq, Smugmug o Gallery, este último además tiene una versión open source que te puedes montar tú mismo) Y también se pueden exportar a CD.

    En la zona Debian tenemos un interesante artículo que habla de una aplicación muy útil para PYMES llamada BulmaGes. Este producto open source GPL español permite llevar la facturación. contabilidad y terminal de punto de venta (TPV) A medio plazo se pretende convertir este programa en un verdadero ERP profesional (añadiendo gestión de nóminas y seguridad social) También se comentan por encima otras herramientas afines dedicadas a las PYMES y los autónomos: Abanq, ADempiere, Galopin y KEME-contabilidad.

    Como siempre dentro de las noticias sobre Debian destacan las nuevas aplicaciones que se han añadido a larga lista de paquetes incluidos en esta distribución. En esta ocasión me han llamado la atención: desproxy, un programa para establecer túneles TCP a través del HTTP (¿para qué puede servir esto? … puede ser interesante); freemat, framework similar a MATLAB (he visto por la red que ya hay proyectos de integración de esta herramienta en Grids); y giver, una herramienta para compartir archivos dentro de una red local.

  8. En el artículo de la sección reportaje se habla del proyecto MAEMO. Este es un proyecto que inició Nokia para utilizar Linux en una nueva generación de dispositivos tipo TabletPC con pantalla táctil como principal dispositivo de acceso. El mundo de los dispositivos móviles (PDAs, smartphones, TabletPC, etc.) ha sido un terreno tradicional de los sistemas privativos: Windows Mobile, Blackberry OS, Palm OS y Symbian. Parte del código de el último sistema ha sido adquirido por Nokia con intención de liberarlo pronto.

    No todo el código de MAEMO es libre. Nokia retiene un 10% en forma propietaria, la parte que constituyen los drivers de hardware específico como el manejo de pantallas táctiles. MAMEO está basado en Debian y utiliza GMOME (GTK+, Pango, D-Bus, GLib, GnomeVFS, GConf) como base de su interfaz de usuario. La arquitectura hardware de base está basada en el procesador ARM. Además MAEMO es monousuario. Y para rematar no usa las herramientas básicas de GNU (p.e ls, tar, tec.) sino que utiliza una especial llamada Busybox. La arquitectura de MAEMO se puede dividir en un kernel (rama 2.6 de Linux), una distribución base (busybox más un gestor de ventanas llamado matchbox optimizado para dispositivos móviles, GTK+ para trabajar con interfaces gráficas de usuario y un sistema base de debian) y las aplicaciones ( que utulizan un SDK basado en el framework hildon qure ahora forma parte de Gnome y es utilizado por otras distribuciones como Ubuntu Mobile)

    Para desarrollar aplicaciones se dispone de un SDK, un entorno de compilación cruzada (scratchbox), y un servidor gráfico (Xephyr) En el artículo se describe el proceso de instalación de cada uno de esos componentes y cómo arrancar el entorno completo que se ejecuta como una especie de máquina virtual mediante el Xephyr que corre dentro del servidor gráfico de nuestra distribución.

    Finalmente el artículo habla de tres proyectos relacionados con la filosofía de MAEMO que son: OpenZaurus (prácticamente abandonado), OpenMoko (que tiene como soporte una plataforma de hardware abierta llamada Neo FreeRunner lanzada en Junio de este año), Android y Ubuntu Mobile.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s