¿Es un meme? ¿Es un manifiesto contra la SGAE? ¿Es un nuevo producto de Apple? ¡No! ¡Es una lista de las nuevas cosas que incorpora la version 2.6.33 del kernel Linux! Que acaba de ser anunciada. Resumen: Nouveau (driver para tarjetas gráficas Nvidia) y otras mejoras del subsistema gráfico, soporte de Nintendo Wii y Gamecube, DRDB (dispositivo de bloque virtual distribuido en red), mejoras en perf, llamada al sistema rcvmmsg(), una extensión de seguridad a TCP apodada "Cookie Transactions", compcache (compresión de parte del cache mediante swap), drivers para hardware virtual VMWare y otras mejoras. La lista completa en inglés aquí.
Y, para que vean que me modernizo, esto post ha sido escrito con Blogilo, la aplicación de KDE 4.4 (una auténtica maravilla de versión, por cierto) para escribir blogs.
· Nouveau: Que es un driver para tarjetas gráficas Nvidia, las únicas que quedaban sin drivers libres en Linux. Nvidia no ha contribuido a este driver, sino que ha sido desarrollado mediante ingeniería inversa (y, según se rumorea, documentos supuestamente confidenciales encontrados en oscuros rincons de servidores rusos). Tiene 26.000 líneas de código y ha sido desarrollado desde el 2006. Las tarjetas gráficas son uno de los componentes de hardware más complejos que se pueden encontrar hoy en día, y es muy dificil escribir drivers para ellas incluso teniendo toda la documentación necesaria, con lo que este driver representa, en verdad, un esfuerzo hercúleo que debe ser aplaudido.
¿Por qué usar Nouveau en vez de los drivers oficiales de Nvidia? La nueva y potente tarjeta que has comprado hoy dejará de ser soportada en unos pocos años. Esto no ocurre con los drivers libres. Nouveau (y el driver libre de ATI) soporta más dispositivos que los drivers oficiales. Nouveau no solo soporta chips modernos, tambien soporta otros como Riva TNT y Geforce 2/4MX/4Ti/FX. Las características soportadas, sin embargo, no son comparables, pero Nouveau ya tiene un buen montón de soporte de cosas básicas: modesetting (KMS), suspensión/resumen, Dual Head, y operaciones 2D (EXA, Xrender, vídeo Xv). El 3D está en desarrollo pero está progresando poco a poco. Es de notar que el problema de los famosos "ctxprogs" ha sido resulta, ya que pueden ser autogenerados.
· DRDB: DRDB ("Distributed Replicated Block Device") es un dispositivo de bloques replicado en varios clusters desarrollado por [http://www.linbit.com/ LINBIT]. Su propósito es servir de base para crear clusters de alta disponibilidad (HA). DRDB puede ser entendido como un RAID-1 sobre la red. Para la gestión del cluster se necesita un gestor de cluster (por ejemplo, heartbeat). Ver http://www.drbd.org/, http://www.linux-ha.org
· Mejoras de perf: perf probe, perf kmem, perf bench, perf diff, scrips perl para perf y filtros: Esta versión añade muchas mejoras a la infraestructura de traceado y a la herramienta perf (tools/perf)
perf probe: perf probe es un subcomando que permite crear probes (sondas) de kprobes. Kprobes es un systema que permite insertar puntos de depuración en cualquier parte del kernel para recolectar información, dinámicamente y sin afectar al funcionamiento del sistema. Es el sistema utilizado por Systemtap. Perf probe permite definir sondas utilizando expresiones en C (números de línea, nombres de función, variables). Por ejemplo
Paso 1: Añadir una nueva sonda en una línea de código C: "perf probe -P 'p:misonda @fs/read_write.c:285 file buf count'" (crea una nueva sonda, llamado "misonda", que inspeccionará las variables file, buf y count ). De manera alternativa, puedes tambien usar comandos más simples, como "perf probe sys_open", que añade una sonda al símbolo sys_open symbol (la llamada al sistema open())
Paso 2: Añade una sonda kretprobe en el retorno de una función "perf probe -P 'r:myretprobe vfs_read $rv'"
Paso 3: Si ejecutas "perf list", verás una sección nombrada "kprobes" que lista las sondas que acabas de crear.
Paso 4: Inicia una captura de eventos: "perf record -f -e kprobes:myprobe:record -F 1 -a ls" y tracéalo con "perf trace"
perf bench: perf bench es una pequeña suite de microbenchmarks. En esta versión, solamente hay tres benchmarks: perf bench sched messaging (para medir el gestor de procesos y el IPC), perf bench sched pipe (mide el rendimiento de pipe()) y perf bench mem memcpy (mide el ancho de banda de la memoria). El comando perf bench all ejecutará todos los benchmarks.
perf kmem: Esta herramienta es en gran medida una versión de perf de la herramienta kmemtrace-user. Muestra información varia sobre SLAB.
perf diff: perf diff muestra diferencias de rendimiento entre varias capturas.
scripts perl de perf: Se trata de un motor de scripting para programar scripts de perf trace. Ver perf trace -g/--gen-script y perf trace -s/--script.
filtros perf: Esta característica añade soporte de filtros a la infraestructura de tracepoints, para ser utilizado con la opción "--filter expresión". Por ejemplo, para tracear solo las interrupciones del temporizador: "perf record -e irq:irq_handler_entry --filter='irq==0' -R -f -a sleep 10". O para capturar solamente la IRA 19 cuando se alcanza 'achi': "perf record -e irq:irq_handler_entry --filter='irq==19 && name==ahci' -R -f -a sleep 10"
· recvmmsg(): Se trata de una llamada al sistema que permite llamar de una sola vez varias llamadas de recvmsg(). Para aplicaciones de mucho ancho de banda y paquetes pequeños, el rendimiento y la latencia mejoran enormemente.
· TCP Cookie Transactions: Esta extensión a TCP, llamada [http://en.wikipedia.org/wiki/TCP_Cookie_Transactions Cookie Transactions] (TCPCT), tiene como intención proteger contra ataques DoS como floods SYN y terminación maliciosa de conexiones. A diferencia de las antiguas protecciones SYN, TCPTC no causa conflictos con otras extensiones TCP, pero requiere soporte de TCPCT en las pilas TCP del cliente y el servidor. La razón más inmediata para el uso de TCPCT es el desarrollo del protocolo DNSSEC.
· Controlador del E/S de dispositivos de bloques: Los grupos de control son contenedores virtuales que son creados como directorios dentro de un sistema de archivos especial (generalmente, con la ayuda de herramientas especiales),y se pueden añadir conjuntos de procesos arbitrarios a ese grupo, que puede ser configurado para que tenga un conjunto determinado de propiedades de gestor de CPUs o límites de memoria.
Esta versión añade el controlador del E/S de los dispositivos de bloque. A día de hoy, el gestor de IO CFQ lo usa para reconocer grupos de tareas y controlar el ancho de banda de disco concedido a esos grupos (algo del estilo de las prioridades de CFQ, pero implementado de otra forma).
· Compcache: compresión de swap en memoria: Compcache es un proyecto (en desarrollo, solamente disponible en Staging) que crea dispositivos de bloques en la memoria RAM (/dev/ramzswapX) que son usados como discos swap. Las páginas de swap que se escriben a este dispositivo son comprimidas. Parte de tu RAM se usa como siempre, la otra parte (el tamaño es configurable) se usa para guardar páginas comprimidas, esto incrementa la cantidad de RAM que puedes usar en la práctica.
Esta característica puede ser útil en muchos casos: Netbooks, smartphones y otros dispositivos embebidos, instaladores de distribuciones, clientes tontos sin disco, virtualización, o viejas máquinas sin suficiente RAM para ejecutar software moderno. Las mediciones han demostrado que esta es característica efectiva.
· Mejoras gráficas: Además de la inclusión de Nouveau, está la ronda de mejoras habituales al subsistema gráfico que se han vuelto tan comunes tras la inclusión de GEM y KMS
"Page flipping": Esta característica es necesaria para implementar un escritorio "tearing free" (defecto gráfico por el cual dos frames pueden mostrarse mezclados al mismo tiempo). Se ha añadido una ioctl para el soporte en la API KMS.
Soporte de HDMI para la Radeon R600.
Soporte de overlay de vídeo en el driver i915.
· Soporte de Wii y Gamecube: El proyecto gc-linux.sourceforge.net ha estado trabajando en el soporte de Linux de las consolas de Nintendo, basadas en PPC: Nintendo Wii y Nintendo Gamecube.
· Drivers VMWare: VMware ha contribuido con dos drivers para la GPU virtual y la tarjeta de red virtual vmxnet3 de sus hypervisors. Gracias a udev, esto significa que los invitados Linux ejecutándose en un huésped VMware tendrá un rendimiento gráfico y de red óptimo.
· DesBKLificación de reiserfs: Una de las principales desventajas de reiserfs (y una de las razones por las que la mayoría de las distros usa Ext en su lugar) es que su código gestiona la concurrencia de procesos utilizando un gran bloqueo, el llamado BKL (Big Kernel Lock). Esto sifgnifica que su escalabilidad SPM es muy pobre. Esta versión no soluciona ese problema, pero reemplaza el BKL con un bloqueo específico de reiserfs. En esta versión, ya no hay más trazas del BKL en su código. Ha sido convertido en un mutex recursivo. Esto puede sonar "sucio", pero usar un bloqueo tradicional en reiserfs requeriría una reescritura más profunda ya que la arquitectura existente depende íntimamente en las reglas del BKL. Debido a las semánticas sutiles de los cambios relacionados con bloqueos, algunas cargas podrían tener algunas regresiones y otras pequeñas ganancias.
· Android, fuera del kernel: Los drivers de Android han sido eliminados del directorio Staging. Desgraciadamente, desde el día de su inclusión en ese lugar Google no ha mostrado absolutamente ningún interés en mejorarles para tener unas mínimas condiciones de calidad y poder ser incluidos en la rama principal. Ante las peticiones de mejora, Google ha contestado que si no lo quieren aceptar tal y como está, que mejor cada uno por su lado. Por supuesto, eso es totalmente legal, pero es triste que un proyecto que ha hecho tanto por llevar el software libre a las masas se haya convertido en un ejemplo de libro de como no interactuar con una comunidad de software libre.