Algo extraño está pasando en las entrañas del internet, como todos sabemos los servidores Nix como GNU/Linux, FreeBSD y todos los demás, siempre han dominado el internet, junto con el servidor WEB rey de reyes, el Apache WEB Server.
Sin embargo viendo las estadísticas de servidores WEB, este febrero ha salido de la NADA, un nuevo contrincante, qq.com que es qq.com
Cualquiera pensaría que Cherokee o lighthttpd, viejos conocidos serian los que estarían en la tercera o cuarta posición del Rank, pero no.
qq.com un servidor WEB salido de las entrañas de china, ha llegado de sorpresa manejando 20 millones de sitios WEB y de no existir en enero, en febrero es la tercera potencia en manejo WEB
Seria interesante saber desde cuando existe qq.com y porque antes no se sabia nada de el, no puedo ser liberado en enero y llegar a 20 millones de sitios en un mes, este servidor debió existir al menos 6 meses antes de aparecer en los graficos, solo que alguien o algo parece que lo censuraba.
En las graficas de este mes de los sitios de internet, tanto los Apaches como los IIS de Microsoft, caen igual que la bolsa de valores para darle lugar al nuevo Rank 3, aunque apache sigue siendo el rey de reyes, habrá que ver si en el próximo mes qq.com no lo supera.
Developer
January 2009
Percent
February 2009
Percent
Change
Apache
96,947,298
52.26%
104,796,820
48.59%
-3.67
Microsoft
61,038,371
32.91%
62,935,449
29.18%
-3.72
qq.com
3
0.00%
20,021,763
9.28%
9.28
Google
9,868,819
5.32%
8,157,546
3.78%
-1.54
nginx
3,462,551
1.87%
3,447,596
1.60%
-0.27
Segun esta grafica en un mes qq.com se hizo del 10% de internet, sin embargo, mientras todos los demas webserver perdieron participacion en la WEB para abrirle paso al qq.com, Pareciera que algo no cuadra ahi, ¿ la caida de los otros webserver indican que en un mes, fue instalado en 20 millones? pero si es asi, por que en lugar de caer en numeros de servidores controlados, en febrero suben su cuota el Apache, Microsoft y Google, solo en % pierden pero no en cantidad de sitios controlados ganan mas que el mes pasado, ¿entonces que sitios les quito a estos 3 el qq.com?
No es para nadie un secreto que yo apoyo al software libre en muchos sentidos, desde ideológicos y pasando por tecnológicos, la capacidad de evolución del software libre, difícilmente será superada por algún paquete comercial.
Ahora veremos por que GNU/Linux puede superar fácilmente a cualquier Windows en rendimiento y mientras Windows no entregue su código fuente, jamás podrá superar a GNU/Linux, en desempeño.
En un sistema operativo comercial como lo es Windows y algunas distros de Linux, dígase RedHat, la intención siempre será que el sistema operativo corra en la mayor cantidad posible de computadoras, pero, por regla general, siempre hay mas computadoras “obsoletas” que de de nueva generación. Cuando las compañías compilan su código, lo hacen pensando en el procesador mas disponible, por ejemplo. Hoy tenemos un QUADCORE o los XEONES, pero no todos tienen un QUADCORE, algunos tienen CoreDUO o algunos aun conservan sus Pentium IV y hay muchas computadoras ahí a fuera con procesadores mas viejos. Todos sabemos que los procesadores mas nuevos siempre mantienen compatibilidad con los viejos, asi que compañías como Microsoft en lugar de sacar una versión de Windows orientada a cada procesador, dígase Core 2 Duo o Pentium IV, mejor sacan una sola línea, Pentium IV, saben que correrá a partir del Pentiun IV en adelante. Que pasa con los flamantes procesadores Core 2 Duo, pues sus bondades de desperdician, muchos de sus nuevos registros jamás son usados, al menos no por el sistema operativo. Algunos juegos usaran los nuevas bondades pero finalmente también harán uso de las Apis del sistema operativo quien no hara uso completo de las bondades del procesador.
Las versiones comerciales de Linux tambien tienen ese problema, compañías como RedHat esperan que su OS corra en el mayor numero de computadoras disponibles, asi que aunque existen Core 2 Duo, a la hora de compilar su kernel y sus programas lo hacen especificaandole a compilador un procesador mas viejo.
Por ejemplo el Centos 5.2 clónico del RedHat 5.2 tiene un kernel que puede ser ejecutado a partir de un Pentium Pro, desde 1995 que existe ese procesador, estamos en el 2009, el kernel tiene una obsolencia de código de 14 años
Afortunadamente GNU/Linux nos da acceso a todos los códigos fuentes, desde el ls hasta el mismo kernel y el compilador GNU, que es una maravilla ese compilador nos permite especificar el procesador para que el compilara algún código.
Dicho lo anterior es posible tomar el kernel de Linux y recompilarlo pero en lugar de usar instrucciones de procesador de hace 14 años, se le dice que use las de un Core 2 Duo actual o un Xeon actual, el resultado sera un nuevo kernel pero sacando provecho al procesador con toda sus capacidades.
Otra ventaja de disponer del código fuente es la personalización, por ejemplo Windows viene con cientos de controladores, para floppy , tarjetas de video, tarjetas de red, n cantidad de driver, de los cuales usara solo uno. Sin embargo tiene que cargar con el resto de driver, y aveces hasta con drivers obsoletos, por ejemplo Windows esta listo para usar floppys drivers, pero la mayoría de las nuevas pcs ya ni traen la disquetera. Aun asi Windows tiene el driver Listo para controlarla, la mayoría usa NTFS en sus sistemas de archivos, sin embargo Windows esta preparado para usar FAT, VFAT, FAT32, NTFS versiones viejas y su propio NTFS Actual, tiene que lidear con todos esos sistemas de archivos que tal vez ni use jamás.
Algo similar ocurre en Linux, Linux viene listo para usar cientos de tarjetas, cientos de drivers para controlar muchas cosas en la PC, el problema es que muchas de esas cosas, tal vez ni las tenemos, al igual que Windows, viene preparado para leer FAT, VFAT, NTFS, etc ,etc, en sus propios sistemas de archivos Ext2, Ext3, Ext4, está listo para usar drivers de disquetera, en fin puede usar tantos drivers como Windows, sin embargo a la hora de instalar usaremos una sola tarjeta de red y los demás drivers solo estarán ahí sin hacer nada, ocupando espacio y distrayendo al kernel.
Otra ventaja de OS libres como Linux sobre sistemas operativos cerrados es, la capacidad de decidir como construir el kernel, que drivers seusaran realmente.
Si yo se que mi equipo solo va a usar Ext3, no necesito soportar Ext2, ni Ext4, quito ese código y cuando se compile no estara el kernel esperando controlar Ext2 y Ext4.
Si yo se que tengo una tarjeta de red, por ejemplo una 3com, no necesito drivers para HP, Pcnet32, etc, etc, las cientos de tarjetas que soporta, para que, requiero solo la 3com
Si la computadora solo tiene discos SATA y ya no usa los viejos IDE, no hay necesidad de ponerle drivers para IDE, al punto en que podemos tener un kernel que solo controla el hardware especifico en la computadora.
El resultado será un kernel VELOZ, no se trata de ganar un segundo o dos, se trata de ganar 20 segundos o mas y en un sistema que estará operando indefinidamente, esta velocidad tiende a infinito.
Para ejemplificar
Un carro va a 20 kilometros por hora con el kernel gnerico
Otro carro va a 25 kilometros por hora con el kernel personalizado.
No parece mucho, pero cada hora el carro con el kernel personalizado avanzara 5 kilometros mas, al final de un año de producción, podría encontrarse a miles de kilómetros de distancia del kernel genérico.
Esto no es aplicable solo al kernel, está disponible el código de SSH, Apache y prácticamente de todo programa en un OS Linux.
Por ejemplo el apache, un apache genérico, puede resultar mas lento que un apache compilado con las bondades del procesador que lo ejecutara.
Si para Dosear un apache genérico se requiere 10 computadoras, con uno personalizado se requerirán 30
Un kernel compilado a la medida, un apache con instrucciones del procesador actual, lo podras dosear, pero te costara mayor trabajo.
Algunos se han de preguntar que hace tan difícil dosear la cueva, la respuesta es en parte que tengo personalizado mucho de lo que corre en el servidor desde el kernel, hasta el apache, muchos programas, por lo que el servidor es capaz de reaccionar más rápido ante un ataque.
Ahora la comprobación.
Hare un programa que cuente los segundos, y solo eso hará, podre a grabar el arranque de un Kernel genérico y contare los segundos que le toma llegar al prompt para pedir usuario y clave, luego hare lo mismo con el kernel personalizado en ese mismo hardware y se podrá observar, cuanta velocidad se gana tan solo con compilar el kernel. Cuanta mas si recompilamos apache, sendmail y otros servicios que vienen genéricos.
Como se puede ver en el video, no se gana uno o dos segundos, se ganan casi 30 segundos de diferencia…. eso es MUCHO.
Mosix es un parche para el kernel de Linux que le da capacidad de ejecusion distribuida de procesos, de esta forma se puede armar una “SUPER COMPUTADORA” de un laboratorio de computo o de TODAS las computadoras existentes en una red, asiéndolas trabajar como si se tratara de una sola.
Si en una red de investigación, o redes universitarias donde los equipos conectados pueden ser del orden de los cientos y a veces miles, se pueden unificar todos para crear una computadora formada de miles de computadoras. De esta forma cualquier programa de investigación que sea requiera gran poder de proceso puede ser usado sin modificación alguna en su código, la computadora que terminara haciendo las operaciones será cualquiera de la red, la que se encuentre con menos estrés
Ahora he comprobado que es más fácil instalar el Mosix, cuando lo instale en producción por ultima vez para una universidad hace, por el 2001 era más problema por que había que escribir los .conf de su configuración y de los nodos en el cluster uno a uno, ahora mosix.install lo hace todo muy fácilmente
La ventaja de no tener que modificar los programas para usar este tipo de cluster también tiene cierto tipo de lastre, muchos procesos no pueden ser movidos a otros CPUs si están anclados por uso de hardware o uso de memoria compartida.
Sin embargo, si los programas son de investigación estan haciendo cálculos, los investigadores no tienen que aprender a programar para algún cluster, solo programación simple y el kernel se encarga de distribuir la carga.
En este tipo de cluster cada PC es una terminal de una SUPER COMPUTADORA, es decir, en cualquier terminal puedes lanzar programas, pero estos emigraran a otro CPU, cualquiera que se encuentre más relajado, esto da la sensación de que la computadora mas humilde una pequeña 80386 puede hacer cálculos como si una QUADCORE/XEON.
http://www.mosix.org/mos2/MOSIX-2.25.0.0-i386.for_Linux_kernel-2.6.28.tbz
Tip
Para lanzar programas en el cluster se usa el comando mosrun que como parámetro lleva el programa que se lanzara, si se lanzara mosrun con bash y se le colocara como Shell de un usuario, todos los hijos de bash que serian todos los hijos del proceso musrun bash estarían dentro del cluster
Mosix no es software libre y la versión que permite descargarse ahora esta limitada a 6 computadoras como máximo, sin embargo existe el OpenMosix, aunque este aun es un parche para los kernel de la serie 2.4.x y es que el desarrollo de OpenMosix esta parado, por lo tanto no ha evolucionado la serie 2.6.x