Ya se ha anunciado (por diferentes canales)la versión 3.0 del kernel Linux. Aparte de un nuevo sistema de numerar versiones, este kernel tiene unas cuantas novedades: defragmentación automática y 'scrubbing' de datos en Btrfs, envío de mensajes ICMP_ECHO sin privilegios, wake on WLAN, filtrado de paquetes BFP acelerado mediante JIT, soporte de XEN dom0, un sistema a lo memcached para el caché tde páginas, la llamada al sistema sendmmsg() que envía múltiples instancias de sendmsg(), la llamada al sistema setns() para gestionar mejor los sistemas de virtualización ligera, como los contenedores, soporte de nuevo hardware como por ejemplo Microsoft Kinect y APUs AMD Llano Fusion, y muchos otros drivers y pequeños cambios. La lista completa de cambios, en inglés, puede encontrarse aquí, como siempre.
· Btrfs: defragmentación automática, scrubbing, mejoras de rendimiento · Defragmentación automática: Los sistemas de archivos COW (copy-on-write, copiar-al-escribir) tienen muchas ventajas, pero también algunas desventajas, como por ejemplo la fragmentación. Cuando Btrfs escribe un archivo al disco por primera vez lo hace secuencialmente, pero el diseño COW implica que cualquier modificación posterior no debe reescribir los datos antiguos, sino escribirlos en un bloque libre del disco, lo cual causa fragmentación (las bases de datos RPM son un caso común de este problema). Además, están los problemas de fragmentación comunes a todos los sistemas de archivos. Btrfs ya ofrecía algunas alternativas para luchar contra este problema. En primer lugar, soporta defragmentación en vivo utilizando el comando "btrfs filesystem defragment". En segundo lugar, tiene una opción de montaje, -o nodatacow, que desactiva el COW para los datos. Ahora se añade una tercera opción, la opción de montaje -o autodefrag. Este mecanismo detecta pequeñas escrituras aleatorias en los archivos y los defragmenta automática y transparentemente, sin intervención del usuario. Aun no funciona bien con imágenes de virtualización o grandes bases de datos, pero funciona bien para los archivos pequeños como bases de datos rpm, sqlite o bdb. · Scrubbing "Scrubbing", que podría traducirse como "fregar", o "restregar", consiste en comprobar la integridad de todos los datos del sistema de archivos: Se van comprobando los checksums de todos los datos, y si hay alguno erróneo, o el disco está dañado, se restaura una copia en buen estado, de haberla. · Mayor velocidad de creación/eliminación de archivos: Btrfs tiene bajo rendimiento en la creación/eliminación de archivos, la razón es que cada creación/eliminación necesita hacer modificaciones en el b+tree, como insertar o eliminar un item de inodo, de nombre de directorio, índice de directorio, etc. Ahora btrfs puede retrasar la inserción/eliminación de items en el b+tree, lo que permite acumular modificaciones y hacerlas todas de una vez. Los microbenchmarks de creación de archivos se han acelerado un ~15%, los de eliminación un 20%. · No escribir al disco items de checksum de datos que no han cambiado: Mejora el rendimiento de fsync. Un benchmark sysbench haciendo "escritura aleatoria + fsync" ha aumentado de 112.75 peticiones/segundo a 1216 requests/seg. · Asignador de espacio en configuraciones con múltiples discos: El asignador de "chunks" (el que busca espacio para usar en el disco) siempre asigna el espacio en las configuraciones multidisco en el mismo orden. Esto causa una distribución de los datos subóptima, especialmente usando RAID1/10 y un número impar de dispositivos. Ahora btrfs intenta buscar espacio en primer lugar en los discos con más espacio. · sendmmsg(): acumulación de llamadas a sendmsg(): recvmsg() y sendmsg() son las llamadas al sistema que se utilizan para recibir/enviar datos a la red. En Linux 2.6.33 se añadió recvmmsg(), una llamada al sistema que permite recibir en una sola llamada al sistema los datos de varias llamadas recvmsg(), lo cual mejora el rendimiento y la latencia en muchos casos. Ahora, se ha añadido su equivalente sendmmsg(). Los microbenchmarks muestran una mejora de ancho de banda en el envío de tráfico UDP del 20% y un 30% en sockets raw. · Soporte de Xem Dom0: Por fin, Linux tiene soporte del modo Dom0 de Xen, requisito para poder funcionar como host Xen sin parches. · Cleancache: Cleancache es algo opcional que permite aumentar el rendimiento del caché de páginas del kernel. Podría describirse como algo análogo a memcached, pero para páginas de cache. Proporciona un almacenamiento no directamente direccionable por el kernel, que no garantiza que los datos que se escriban en él no desaparecerán. Puede ser usado por sistemas de virtualización para mejorar la gestión de memoria de las VMs, pero también puede usarse para implementar un caché comprimido. · Filtrado de paquetes BPF mediante JIT: El filtrado de Berkeley Packet Filter, que es lo que utilizan herramientas como libpcap/tcpdump, normalmente se hace con un intérprete. En esta versión se ha añadido un JIT que genera código nativo para los filtros, y hace que el filtrado sea mucho más rápido. Aunque pueda parecer una exageración tener un JIT en el kernel, lo cierto es que se trata de un JIT muy, muy simple, y es algo que otros sistemas operativos, como FreeBSD, tienen desde hace años. · Wake on WLAN: Wake-on-LAN es la capacidad de que un sistema dormido pueda ser "despertado" por un paquete de red especial. En esta versión se añade en la implementación 802.11 la misma capacidad, pero para tarjetas de red inalámbricas. · Mensajes ICMP_ECHO sin privilegios: Esta versión permite enviar mensajes ICMP_ECHO (es decir, un ping) sin necesidad de privilegios de root, lo cual permite que la herramienta ping no requiera setuid. · Llamada al sistema netns(): Linux soporta diferentes espacios de nombre para los diferentes recursos que gestiona; por ejemplo, las formas ligeras de virtualización, como los contenedores o systemd-nspaw, muestran a los procesos virtualizados un PID virtual en lugar del PID real. Lo mismo puede hacerse con la estructura de directorios del sistema de archivos, los recursos de red, IPC, etc. La única manera de configurar diferentes espacios de nombre es usar diferentes flags en la llamada al sistema clone(), pero ese método no permite hacer cierto tipo de cosas, como permitir que un proceso acceda al espacio de nombres de otro proceso. La llamada al sistema setns() resuelve ese problema. · Temporizadores-alarma: Los temporizadores-alarma son temporizadores híbridos, similares a los temporizadores de alta resolución, sólo que cuando se suspende el sistema, se activa el RTC para que se dispare y despierte el sistema.Este concepto está inspirado en los temporizadores-alarma de Android, y la API usa la interfaz de relojería POSIX.
Fuente: http://diegocg.blogspot.com/2011/07/las-novedades-de-linux-30.html
Ver también: http://kernelnewbies.org/LinuxChanges
|