19 de febrero de 2013

Las novedades de Linux 3.8

Ya se ha anunciado la versión 3.8 del kernel Linux. Esta versión incluye soporte en Ext4 para empotrar pequeños archivos dentro del inodo, que mejora el rendimiento para esos archivos y permite ahorrar algo de espacio. Hay también una nueva característica de Btrfs que permite el reemplazado rápido de un disco por otro, un nuevo sistema de archivos F2FS optimizado para SSDs, soporte de diferentes espacios de nombre para procesos ejecutados por usuarios sin privilegios, contabilidad de la memoria de pila y del slab en el controlador de recurso de memoria, checksums en el journal de XFS, un rediseño de las políticas para arquitecturas NUMA y, por supuesto, el muy mencionado fin de soporte de los procesadores 386. También se han incluido drivers nuevos y muchas otras mejoras y pequeños cambios. La lista completa de cambios, en inglés, puede encontrarse aquí, como siempre.

  • Ext4 empotra los archivos pequeños en el inodo: Cada archivo en Ext4 tiene su correspondiente inodo que almacena información variada -tamaño, fecha de creación, propietario, etc- sobre el archivo (puede verse esa información con el comando stat(1)). Pero el inodo no almacena los datos del archivo, sólo información sobre dónde encontrarlos.

    El tamaño utilizado por cada inodo queda predeterminado a la hora de crear el sistema de archivos con mkfs.ext4(8), y por defecto son 256 bytes. Pero ese espacio no se utiliza siempre del todo (a pesar de que los atributos extendidos pequeños hacen uso de él), y hay millones de inodos en un sistema de archivos típico, así que se pierde un poco de espacio. Al mismo tiempo, cada archivo de datos necesita asignarse al menos un bloque (por defecto de 4KB de tamaño), incluso si el archivo sólo va a usar unos pocos bytes. Y se producen movimientos del brazo del disco para leer esos pocos bytes, porque los bloques de datos no se ubican contiguos a los inodos.

    Ext4 ha añadido el soporte para almacenar archivos muy pequeños en el espacio sin utilizar de los inodos. Con esta característica se utiliza el espacio sin usar de los inodos, no se asigna un bloque de 4KB para los datos del archivo, y leer esos archivos es más rápido, porque una vez que se lee el inodo también están disponibles los datos, sin necesidad de movimientos del brazo de disco. Algunas pruebas simples muestran que con las fuentes de un Linux 3.0, el nuevo sistema puede ahorrar más de un 1% del espacio de disco. En un directorio /usr de prueba, se ahorró más del 3% del espacio. El rendimiento para los archivos pequeños también se ha incrementado. Los archivos que pueden ser empotrados pueden configurarse indirectamente incrementando el tamaño del inodo (opción -I de mkfs.ext4(8)) - cuando más grande sea el inodo, más grandes los archivos que pueden empotrarse (pero si la carga utilizada no hace uso extensivo de pequeños archivos, ese espacio se gastará). 
  • Btrfs: reemplazo rápido de dispositivos: Como sistema de archivos capaz de expandirse sobre múltiples discos, Btrfs puede eliminar un disco fácilmente, ya sea porque quieres reducir el tamaño de tu pool de almacenamiento, o simplemente porque el disco está fallando y quieres sustituirle:

       # btrfs device add new_disk

       # btrfs device delete old_disk


    Pero este proceso no es tan rápido como podría ser. Btrfs ha añadido una operación para reemplazar un disco, que es mucho más rápida:

        # btrfs replace mountpoint old_disk new_disk

    La copia normalmente procede al 90% de la velocidad del disco, mientras no haya otras operaciones simultáneamente. La operación puede llevarse a cabo en un sistema en funcionamiento, no requiere desmontar el sistema de archivos o detener procesos, y no es un problema que se apague el ordenador por corte de energía durante la operación; el proceso continuará en el próximo montaje. Es posible usar el comando btrfs replace status para comprobar la evolución de la operación, o btrfs replace cancel para cancelarla.
  • F2FS, un sistema de archivos para SSDs: F2FS es un sistema de archivos experimental, aportado por Samsung, que está optimizado para dispositivos de almacenamiento basados en memoria flash. Linux ya tiene varios sistemas de archivo -logfs, ubifs, jffs2- para memoria flash, pero están diseñados para dispositivos flash "nativos" que exponen la memoria flash directamente  al ordenador. Gran parte de los dispositivos de memoria flash que existen en el mercado no son "nativos", sino que tienen un firmware que emula una interfaz de bloques (FTL), como la de los dispositivos tradicionales, lo cual permite utilizar los sistemas de almacenamiento y sistemas de archivo tradicionales. Estos sistemas de archivo tienen algunas optimizaciones para estos SSDs, pero el sistema de archivos y su formato es el mismo de siempre.

    F2FS es un sistema de archivos diseñado para SSDs que tiene en cuenta la existencia de una capa de traducción a bloques e intenta hacer el mejor uso posible de ella. Para más información se recomienda este artículo: An f2fs teardown.
  • Completado el soporte de espacios de nombres para usuarios sin privilegios: Los espacios de nombre para cada proceso permiten tener espacios de nombre diferentes para varios recursos. Por ejemplo, un proceso puede ver una serie de puntos de montaje, números de PID y estado de la pila de red, y un proceso en otro espacio de nombres podría ver otros. El soporte para espacios de nombres para cada proceso ha estado en desarrollo desde hace años: El comando unshare(1), disponible en distribuciones de Linux modernas, permite iniciar un proceso con los espacios de nombres de puntos de montaje , UTS, IPC o pila de red "no compartidos" con su padre; y systemd utiliza espacios de nombre de los puntos de montaje para las opciones de configuracion de unidades ReadWriteDirectories, ReadOnlyDirectories o InaccessibleDirectories; y para systemd-nspawn. Pero el uso de espacios de nombres estaba limitado a root.

    Esta versión añade la capacidad de usar espacios de nombres para cada proceso por usuarios sin privilegios, con seguridad. Los recursos con espacios de nombres disponibles son los puntos de montaje, UTS, IPC, PIDs, y pila de red. Para más detalles sobre los espacios de nombres en Linux, qué son, cómo funcionan, detalles sobre la API y programas de ejemplo, es recomendable leer estos artículos: Namespaces in operation, part 1: namespaces overview, part 2: the namespaces API, part 3: PID namespaces, part 4: more on PID namespaces
  • Checksums en el journal de XFS: XFS está planeando añadir checksums de metadatos en el futuro. Como parte de esa iniciativa, esta versión añade soporte de checksums en el journal.
  • "Página cero" para las páginas de memoria gigantescas: Las páginas gigantes son un tipo de páginas proporcionadas por la CPU, y son mucho más grandes de lo normal. Suelen ser usadas por grandes bases de datos y aplicaciones que usan grandes porciones de memoria. Por otro lado, la "página cero" es una página de memoria llena de ceros. Esta página es utilizada por el kernel para ahorrar memoria: algunas aplicaciones asignan grandes porciones de memoria llenas de ceros pero no escriben en toda esa memoria, así que en lugar de asignar toda esa memoria, el kernel hace que toda esa memoria apunte a una sola página llena de ceros. La página cero estaba disponible solamente para tamaños de página de memoria normales (4KB en x86), esta versión añade una página cero gigante para aplicaciones que usan páginas gigantes.
  • El controlador de memoria soporta la contabilidad de memoria del kernel: El controlador de memoria de Linux es un control group que puede limitar, contabilizar e isolar el uso de memoria para grupos arbitrarios de procesos. En esta versión, el controlador de memoria tiene soporte para contabilizar dos tipos de memoria de kernel: la pila, y el uso de slabs. Estos límites pueden utilizarse para cosas como para bombas fork.
  • Balanceo de NUMA automático: Muchas máquinas modernas son de arquitectura "non uniform memory access" (NUMA), es decir, acceso de memoria no uniforme: tienen controladores de memoria en cada procesador, y acceder a la memoria del procesador local es mucho más rápido que acceder a la memoria de un procesador remoto, de modo que la ubicación de la memoria en el mismo nodo donde se ejecute el proceso que la referencie es crítico para el rendimiento. Esto es especialmente cierto en grandes servidores con docenas o centenas de procesadores.

    La implementación NUMA de Linux tenía algunas deficiencias. En esta versión se incluye una nueva fundación para NUMA que permitirá construir políticas NUMA más inteligentes y que proporcionen mejor rendimiento. Para más detalles, NUMA in a hurry,
  • Eliminación del soporte de 386: Tal y como se ha comentado en muchos sitios, esta versión de Linux deja de soportar por primera vez el procesador Intel 386 (el 486, sin embargo, aun se soporta)
  Y eso es todo. La lista completa de cambios en inglés, aquí

8 de febrero de 2013

KDE 4.10

Normalmente las nuevas versiones de KDE no me llaman la atención en exceso: tienen mejoras interesantes, pero esas mejoras son como las de las nuevas versiones de Chrome y Firefox, que por ser relativamente frecuentes e incorporar menos cambios fundamentales, llaman menos la atención. La recién publicada versión 4.10 me parece, sin embargo, interesante de comentar:



ADVERTENCIA: ¡IMÁGENES MOSTRANDO OPCIONES DE CONFIGURACIÓN!
Proteja a sus hijos de esta página si lo cree conveniente


  • Los menús de las aplicaciones se pueden mover a un botón situado en la barra de la ventana, como Office y Firefox en Windows, o a un menú tipo OS X.

  • Scripts opcionales descargables para el gestor de ventanas (ej. efectos visuales). Desgraciadamente, los desarrolladores de KDE no han logrado implementar una página web de extensiones que requiere un plugin en el navegador para funcionar, como hacen otros escritorios que presumen de usabilidad, sino que han tenido que conformarse con una ventana que descarga las cosas transparentemente a golpe de clic:

  • El sistema de búsqueda global, nepomuk, ha sustituido el indexador de archivos que solían utilizar -Strigi- por una solución propia que aunque por el momento es inferior a Strigi, es más conveniente a largo plazo. Además, han modificado el proceso de escaneado de archivos en dos partes, por primera vez he podido usarlo sin notar cómo afecta al rendimiento.
  • También han modificado la forma de configurar la exclusión de archivos a configurar, en lugar de extensiones se pueden seleccionar cómodamente tipos mime
  • También han añadido un kioslave para tags de archivo. Con cosas así, es difícil tener envidia de BeOS. Nepomuk ha dado quebraderos de cabeza a mucha gente, pero poco a poco se está convirtiendo en algo sólido.

  • Fondos de pantalla animados. La gracia no está en el fondo animado en sí, algo que ha estado disponible en todos los escritorios desde siempre de una manera u otra (¡Active Desktop! ¡mplayer a pantalla completa forzado a mostrarse por debajo de todas las ventanas!), sino que está basado en QML. Eso permite bastante libertad, como bajar imágenes ascii de un sitio web y mostrarlas en el escritorio, o coger unas burbujas SVG y ponerlas un fondo de color cambiante. Gnome 3.4 tiene un escritorio animado, pero se limita a imágenes que un archivo .xml especifica cuando se deben cambiar. 

    • Dolphin es mucho más rápido abriendo directorios con muchos archivos, gracias a la utilización de múltiples cores.
    • PD - se me olvidaba: después de tantas modificaciones en tantas versiones, el notificador de eventos en el systray por fin empieza a tener un comportamiento normal.
    Hay muchos otros cambios, por supuesto, pero estos me interesaban especialmente.

    5 de febrero de 2013

    Mientras haya dinero...

    Hace dos años que Microsoft "convenció" a Nokia para atar su futuro al de Windows Phone. Con el trato, Nokia conseguía una plataforma de software...y unos cuantos millones por el detalle de dar oportunidad a Microsoft de tener algún futuro en la telefonía portátil. Dicho de otro modo, Microsoft compró con dinero la oportunidad que no había sabido aprovechar.

    Hoy, Microsoft ha dado un préstamo de 2.000$ millones para que Dell salga de la bolsa y quede en manos de su dueño, sin tener que dar cuenta a los inversores. Si meterse en la fabricación de hardware con el Surface -que no está siendo un éxito de ventas- ya le causó roces con los fabricantes de PCs, no creo que aproximarse amistosamente a Dell vaya a mejorar esas relaciones. Aunque tampoco se sabe muy bien qué pretende Dell. ¿Seguir afianzándose en entornos empresariales, volver a intentar vender pantallas táctiles portátiles? Una de las motivaciones para salir de los mercados es no tener que dar explicaciones públicas a nadie. Por sus productos les conoceremos.

    Cabe preguntarse si hay algún paralelismo entre ambos casos, un intento de ganarse el apoyo de empresas a golpe de talón. Se hace difícil pensar que Microsoft haya decidido prestar 2.000$ millones a alguien para que le sea infiel. Los demás fabricantes de PCs, en cambio, tienen bien claro que en su objetivo vital de seguir vendiendo PCs e intentar pillar, si pueden, un trozo de tarta portáctil, no va a haber fidelidad a ningún software.

    Y no limitan sus infidelidades a Android. Acer, por ejemplo, ha decidido probar con chromebooks. Y, para sorpresa de todos, incluidos este servidor de ustedes, y los linuxeros que están cansados de los chistes de "the year of the linux desktop", resulta que los chromebooks han copado el 5-10% de sus ventas a EE.UU. Es una miseria, pero sorprendente. HP por su parte acaba de presentar su chromebook, Lenovo lo va a probar orientándolo al mercado gubernamental-escolar, y los que ya lo habían adoptado, como el omnipresente Samsung, se están encontrando en el puesto número 1 de portátiles más vendidos en Amazon, por delante de los Macbook.

    Como cuentan en ZDNet, esta fiebre por los chromebooks no es una novedad: no se trata más que la reedición de la fiebre de notebooks baratos con linux de hace algunos años. En aquel entonces, Microsoft actuó con rapidez, reanimando XP como sistema operativo con bajo uso de recursos, con mucho éxito. Ahora tendrá que hacer una jugada parecida. Windows 8 no es la catástrofe técnica que fue Vista, pero su polémica interfaz (o el precio de las licencias) están siendo un obstáculo. Pero algo tendrán que hacer: que Microsoft no tenga éxito con los portáctiles y que Windows 8 esté teniendo peor acogida que Vista es un problema, pero que Linux tenga el atrevimiento de empezar quitar cuota de mercado a Windows en su feudo sería como para hacer saltar todas las alarmas.