MSDN Blogs
  • WarNov Developer Evangelist

    High Performance Computing (HPC) y Windows Azure

    • 0 Comments

    Como bien lo dice el título de este artículo, hablo básicamente de dos cosas: HPC y su relación con Windows Azure. Si ud quiere saber de Windows Azure antes de leer este artículo, le recomiendo mis posts introductorios. Si ud quiere saber de HPC y la alternativa que ofrece Windows en este sentido le recomiendo que lea la primera parte de este artículo. Y si quiere saber la relación entre HPC y Windows Azure, le recomiendo la segunda parte del post.

    image

    Primera Parte: HPC

    En la vida real existen aplicaciones de software que definitivamente no pueden ejecutarse en un ambiente de cómputo tradicional y tampoco en un ambiente de cómputo avanzado tradicional (esto es un servidor de grandes características)

    Cálculos científicos como por ejemplo análisis para la creación de una nueva medicina, el estudio del genoma humano, aplicaciones financieras para ejecutar estudios de riesgo sobre cantidades de datos descomunales, predicción del comportamiento de acciones en las bolsas de valores… todo esto requiere de capacidades de cómputo que sobrepasan cualquier procesador que se pueda comprar en Unilago (léase centro comercial temático de computadores) o encargar a Dell por ejemplo a través del sitio web.

    Los cálculos que hacen las CPUs se miden en FLOPS (FLoating point Operations Per Second). Una calculadora decente trabaja con 10FLOPS.

    En general los procesadores de nuestros computadores hoy en día generan de 0.5 a 120 GFLOPS de poder de cómputo. 1 GFLOPS = 10e9 FLOPS

    Pero procesos como la simulación de la dinámica molecular no se pueden terminar en corto tiempo ni siquiera con el poder de 6 PFLOPS = 6 millones de GFLOPS o lo que es equivalente a 6 millones de PCs trabajando juntos para lograr el mismo objetivo.

    Para el caso de la resolución de estos procesos complejos, se han abordado dos soluciones. La primera son los supercomputadores y la segunda son los clústeres de cómputo. Ambas soluciones hacen parte de lo que conocemos hoy como High Performance Computing o HPC.

    La primera tiene grandes limitaciones físicas, pues no podemos construir un solo procesador con una capacidad tan grande como la requerida. Resultaría súper costoso y poco eficiente. Así que los supercomputadores son escasos y limitados.

    La segunda opción, es tratar de emular a un solo procesador gigantesco, mediante la unión de recursos de cómputo que se encuentran distribuidos en unidades independientes de cómputo, que se comunican a través de redes. Esta opción es más viable que la primera y básicamente viene en dos sabores.

    El primer sabor es el restringido a una red homogénea. En general es una LAN o VLAN con máquinas del mismo tipo bajo un mismo sistema operativo. Los desarrollos y administración de este tipo de ambientes son sencillos, pero tienen la limitante que no se podrían conectar con el resto de capacidades de cómputo que tiene el mundo. En general estos sistemas se conocen como Clúster Computing.

    El segundo sabor comprende aquel en el que los nodos que componen la súper máquina se encuentran en distintas redes o dominios administrativos con diferentes características de hardware, sistemas operativos y demás, conectados generalmente a través de internet. La administración es más complicada, pero tenemos la ventaja de poder obtener cómputo de todo el mundo para lograr el resultado buscado. Este tipo de solución se conoce como Grid Computing.

    Hoy en día la mayor capacidad de cómputo alcanzada por un sistema de Grid Computing es de 6PFLOPS precisamente alcanzada por el proyecto Folding@Home que hace simulaciones moleculares. Las máquinas empleadas en este tipo de cómputo son PCs de usuarios como ud o como yo que descargan un cliente que aprovecha los recursos no usados de la CPU para procesar unidades de trabajo en background que luego de ser procesadas se reenvían al servidor central.

    Este tipo de aplicaciones siempre han estado en el ámbito científico súper especializado y acaso en aplicaciones financieras de altísimo nivel.

    Ahora sin embargo no es necesario estar haciendo un doctorado en mecánica cuántica para entrar en este mundo. El mero hecho de crear una aplicación de análisis de redes sociales, podría requerir HPC.

     

    Pero cómo desplegar una solución HPC?

    Gracias a Windows Server 2008R2, es muy sencillo. Si ud tiene una licencia de este OS, ya puede activar los servicios de HPC que vienen con la licencia, para poder conectarse con otras máquinas y distribuir su súper aplicación en el clúster de su compañía. Y si requiere de más cómputo en ambientes heterogéneos y en otras ubicaciones geográficas, entonces gracias a las características High Performance Computing Basic Profile (HPCBP), un estándar del Open Grid Forum para poder conectar clústeres heterogéneos en ambientes HPC podrá expandir sus límites mundialmente.

    Siendo relativamente nuevo en el mercado de HPC, Windows HPC Server 2008 se posicionó en el ranking mundial Anude sistemas de cómputo HPC en la casilla 19 con una capacidad de 180.6 TFLOPS que es aproximadamente igual a 18000 PCs de escritorio de las más potentes hoy en día.

    image

    Segunda Parte: HPC y Windows Azure

    Windows Azure se distingue sobre todo por sus capacidades de escalamiento instantáneo cuando las aplicaciones así lo requieran. Sin embargo desde su concepción, estuvo dirigido a aplicaciones de negocio y no a HPC. No obstante, cuando uno quiere desarrollar una aplicación HPC por ejemplo para el departamento financiero de un Banco y ve la arquitectura de Windows Azure no puede evitar pensar que sería el mejor modelo para hacer HPC “por demanda” sin necesidad de invertir miles de dólares en unidades de cómputo que solo serán necesarias por un tiempo determinado.

    El modelo de Azure nos permitiría por ejemplo tener nuestro Servidor de HPC local en nuestras instalaciones por ejemplo, pero las unidades de cómputo estarían en la nube y aprovisionaríamos tantas como necesitemos solo por el tiempo necesario!

    Qué se necesita entonces para correr HPC en Windows Azure?

    Las instancias de cómputo en Windows Azure corren sobre versiones virtualizadas de Windows Server 2008R2x64. Así que lo único necesario es activar el servicio de HPC en esas instancias y ya estarán listas para unirse al objetivo común, al servicio del servidor principal que estaría on-premises.

    La buena noticia, es que los servicios HPC ya están activos en las instancias de Azure, listos para que las instancias identificar cuando se les están enviando peticiones para trabajos de HPC. De esta manera, aplicaciones financieras, de industria farmacéutica, científicas y demás, podrán generar un sistema HPC con un servidor local y levantar cuántas máquinas sea necesario en la nube y solo serán cargados los costos consumidos. Nada de comprar máquinas ni pagar tarifas planas. Todo será cobrado dinámicamente de acuerdo al consumo de cómputo con los estándares de cobro de Windows Azure. (Hoy en día una hora de proceso en Windows Azure con una CP de 1.7GHz de velocidad nos cuesta 12 centavos de dólar).

    Así que si usted tiene este súper sistema en mente con necesidades de HPC para poderlo desplegar y no lo ha podido sacar a la luz porque la inversión inicial es extremadamente alta, piense que Windows Azure ya admite HPC y que además le convierte toda la inversión de capital inicial (CAPEX) en costos dinámicos operativos (OPEX), brindándole todo lo necesario para que pueda sacar su negocio a producción!



  • WarNov Developer Evangelist

    WordPress & Windows Live: 2 Grandes se Unen

    • 5 Comments

    Siendo realistas a WordPress yo solo le veía un problemita y era que no permitía hacer zoom con el scroll del mouse. Algo mínimo que ya arreglaron. Por supuesto, esto no fue lo que propició la asociación con Microsoft y Windows Live específicamente.

    “#Microsoft NO piensa que el OSS es incompetente. De hecho lo usa, lo apoya y genera OSS y free tools para crearlo.” Ese fue uno de mis twitts respondiendo cierta apreciación que obedece sobretodo a una imagen ya antigua de la forma de operar de la corporación.

    Hoy en día la comunidad es muy importante como generadora de progreso en el mundo. Es por eso que iniciativas no Microsoft y además OpenSource como PHP y ahora WordPress reciben un espaldarazo de la corporación para apoyar su desarrollo y difusión en el mundo. Esto ha sucedido con apoyos financieros, soporte en nuestras plataformas de desarrollo y aún incluyendo productos OSS de terceros en nuestros instaladores.

    En esta ocasión estudiando las necesidades de los consumidores de Windows Live en materia de blogs, Microsoft encontró en WordPress.com una brillante alternativa. Como ya es bien sabido por todos, no se trata de reinventar la rueda.

    image

    WordPress.com tiene todo un conjunto de capacidades impresionantes. Desde una plataforma completamente escalable y una efectiva protección anti-spam hasta una gran experiencia en la personalización de los blogs. WordPress está detrás del 8.5% de la web! Es usado en 25 millones de sitios y es visto por más de mil millones de personas cada mes. Además, Automattic (los padres de WordPress.com) es una compañía en la que sus empleados están enfocados en el arte del blog y cómo mejorarlo continuamente. En definitiva, ellos saben de qué se trata el negocio.

    Así que en vez de que Windows Live invirtiera en crear un servicio de Blog nuevo, se decidió que lo mejor para los consumidores era proporcionarles el poder de WordPress.com integrado con los mejores servicios de Windows Live a los que ya están acostumbrados.

    Tres aspectos importantes de esta unión:

    · Se ofrecerá un mecanismo simplificado para la migración de los blogs actuales de los usuarios hacia WordPress.com

    · WordPress.com se podrá conectar con Messenger a voluntad, para que nuestros amigos se enteren cada vez que escribimos nuestros posts.

    · A los clientes de Windows Live se les permitirá crear fácilmente blogs en WordPress.com.

    Obviamente las urls de los blogs actuales se mantendrán y se mapearán a la nueva version de la plataforma. Así que no perderán ningún visitante durante el cambio.

    Esta es la pantalla que encontrarán en la migración:

    image

    Otras opciones aparte de la migración están disponibles como descargar todo el contenido del blog, migrar después o sencillamente eliminar el espacio actual. Además hay más información de guía aquí.



  • WarNov Developer Evangelist

    Notificaciones de Consumo para usuarios de Windows Azure

    • 0 Comments

    Para que sea más fácil para los clientes de Windows Azure realizar un seguimiento de su uso de horas de cómputo, ahora estamos enviando a los clientes correos electrónicos con notificaciones, cuando el uso de horas de cómputo excede 75%, 100% y 125% del número de horas incluido en el plan de cómputo.  Los clientes de nuestra oferta de consumo estándar recibirán durante las primeras 13 semanas de su suscripción, alertas por correo electrónico cada semana con el consumo de horas de cómputo de la semana anterior.  Después de este periodo, los clientes recibirán alertas por correo electrónico cuando su cómputo exceda 75%, 100% y 125% de su uso mensual basado en el consumo de los últimos tres meses.  Los clientes también pueden ver su uso actual y el balance no facturado en cualquier momento en el portal de cliente de servicios en línea de Microsoft.  La dirección de correo electrónico que se utiliza para la comunicación es la misma dirección que se utiliza al crear la cuenta de facturación.



  • WarNov Developer Evangelist

    Bing + IE9 en el Futuro Cercano

    • 4 Comments

    Con la aparición de IE9, le damos la bienvenida a un nuevo tipo de motor de búsqueda. Uno que ya tiene la efectividad que siempre esperamos, pero que sobrepasa la edad de piedra gracias a estándares como HTML5 aplicados a herramientas como IE9 en aplicaciones como Bing!

    Si Ud. es Silverlight'er no se preocupe, porque HTML5 para nada significa la desaparición de Silverlight. Este ejemplo nos muestra precisamente un escenario adecuado para HTML5, mientras para Silverlight tenemos escenarios con aplicaciones empresariales que requieren presencia online y una gran integración con el negocio de las compañías y sobretodo una interfaz de usuario inigualable.

    En este video les muestro cómo explotando las nuevas características de IE9 (como el soporte a HTML5 y la integración con Windows 7), podemos lograr una nueva era en motores de búsqueda.

    Disfrútenlo!

     
    Por ahora podrán descargar la beta de Internet Explorer 9 desde AQUI:

    Español: www.labellezadeinternet.com

    Ingles: www.beautyoftheweb.com

     


  • WarNov Developer Evangelist

    IE9 Beta disponible dentro de 45 minutos!

    • 6 Comments

    Es 15 de Septiembre de 2010 y son las 11:15am

    Presentamos la nueva versión de nuestro navegador web: se trata de Internet Explorer 9 (IE9), un explorador pensado para mejorar la experiencia de los usuarios, simplificar el trabajo de los desarrolladores y sacar el máximo provecho a las páginas web.

     

    clip_image001

    Este nuevo explorador se enfoca en cuatro aspectos: rapidez, confiabilidad, sencillez y compatibilidad. En palabras de José Antonio Barraquer, director de Unidad de Negocios de Windows para Microsoft Colombia, “Internet Explorer 9 se apropia de las ventajas del computador para ofrecer una navegación mucho más ágil; tiene una apariencia limpia que da más importancia a los contenidos, mantiene un robusto sistema de seguridad y ofrece un mayor soporte a los estándares modernos de desarrollo en internet”.

    La historia de Internet Explorer se remonta al 16 de agosto de 1995, cuando con la salida de Windows 95 al mercado apareció la versión 1.0 de este navegador. Desde entonces, se han realizado sustanciales mejoras en materia de rendimiento, seguridad y apariencia. Tantas, que hoy, 15 años después, se calcula que el 59 por ciento del tiempo que la gente pasa en un computador Windows es invertido en el explorador de internet.

    ¿Qué es lo nuevo de Internet Explorer 9?

    Más limpio y sencillo

    IE9 se enfoca en los contenidos y en lo que el usuario quiere ver y encontrar, por eso, el número de botones se reduce y el marco del explorador se desvanece en el fondo, trayendo a un primer plano la página que se visita. Algunas de características son:

    · Barra de direcciones inteligente más inteligente: La barra de direcciones y el cuadro de búsqueda se combinan en un solo recuadro desde donde el usuario puede navegar a un sitio, buscar y obtener sugerencias de sus proveedores de búsqueda, tener acceso a su historial y a sus sitios favoritos, etc.

    · Navegación por pestañas mejorada. Un renovado diseño para las nuevas pestañas muestra los títulos de los sitios más visitados por el usuario y permite reabrir las pestañas cerradas recientemente, así mismo permite restaurar las última sesión del navegador y carga páginas y gráficos de una manera mucho más rápida. Además podemos extraer pestañas de una instancia de IE9 y ponerlas en otra instancia!

    · Integración con Windows 7: a través de un pin o alfiler se pueden anclar los sitios web a la barra de tareas, para acceder a ellos con tan solo un clic y sin necesidad de abrir el navegador. Además, con el ajuste de ventanas de Aero Snap, ahora se pueden ver dos pestañas o ventanas al mismo tiempo, sin tener que acomodar el tamaño de cada una de ellas. Crece el botón “Atrás”, mucho más usado que el “Adelante”, para que el usuario vea únicamente lo que es indispensable para su navegación.

    clip_image002[4]

    Más confiable

    IE9 responde a las necesidades de los usuarios en materia de privacidad y confidencialidad, que, según Juan Carlos Ruiz, MVP que ha trabajado mucho con nosotros el tema de IE9, “necesitan algo confiable. Poder concentrarse lo que hacen en internet sin pensar en nada más, o hacer transacciones bancarias sin temor a que los roben”. Por eso, IE9 cuenta con sistemas integrados de seguridad, privacidad y confiabilidad que mantienen seguros a los usuarios y evitan que su experiencia se vea interrumpida.

    En materia de seguridad, Internet Explorer 9:

    · Introduce el Download Manager o Administrador de Descargas: Se trata de una función que permite administrar fácilmente los contenidos que están siendo y han sido descargados y que remplaza el cuadro de “Ejecutar, Guardar como o Cancelar” usado en las versiones anteriores de Internet Explorer. El Download Manager permite, desde una misma ventana, abrir o cancelar cualquiera de las descargas, y escanea cada uno de esos contenidos en busca de virus o archivos ejecutables potencialmente dañinos.

    clip_image004[4]

    · Mantiene la navegación en privado (InPrivate): Es una forma ‘navegar a escondidas’, que permite trabajar en la red sin dejar rastro de las páginas que se visitan o las palabras que se ingresan en los buscadores. Además protege los datos de formularios y las contraseñas, garantizando que su información personal se mantendrá en privado.

    · Mantiene la más alta protección contra el malware: Con filtros como Smartscreen y Anti-pishing que bloquean los mecanismos de suplantación de identidad y software maliciosos, Internet Explorer sigue siendo el navegador más seguro del mercado.

    clip_image006[4]

    Más rápido

    Según Walter Novoa (WarNov), bloguero y Developer Evangelist, “pensando en que a los usuarios nos gusta navegar muy rápido y no podemos esperar montones de tiempo a que las paginas descarguen, Internet Explorer 9 está diseñado para descargar las páginas mucho más rápido que otros navegadores. Además IE9 se aprovecha totalmente del hardware de la máquina, incluyendo la tarjeta de Video para sacarle el máximo provecho a HTML5 por ejemplo”. Algunas de sus novedades en materia de rapidez son:

    · Aceleración por hardware: Actualmente los navegadores usan sólo el 10% de las capacidades del computador, pero IE9 toma ventaja de todo el poder de cómputo de la máquina y del sistema operativo Windows, permitiendo al explorador correr como si fuera una aplicación nativa instalada en el computador.

    · Olvida los Plug-in adicionales: Soporta elementos de audio y video, habilita sombras, video embebido y contenido de audio sin necesidad de un Plug-in adicional.

    clip_image008[4]

    Más compatible e interoperable

    “Muchas de las aplicaciones para desarrollar para internet requieren del uso de aspectos técnicos muy elaborados. La compatibilidad, en estos casos, exige que podamos crear aplicaciones desde diferentes lenguajes que sean interoperables con los diferentes navegadores”, explica Sergio Acosta, experto diseñador, y agrega: “el soporte de HTML5, el nuevo lenguaje de HTML establecido como el nuevo estándar para creación de aplicaciones en internet, permite que todas las aplicaciones se vean exactamente igual y funcionen de la misma manera sin tener que reescribir varias veces el mismo sitio para los diferentes exploradores”.

    Las mejoras de IE9 en materia de interoperabilidad permiten a los desarrolladores enfocarse en crear grandiosas aplicaciones, en lugar de gastar tiempo de creando tres veces el mismo sitio. Dentro de las mejoras en este ámbito se destacan:

    · Soporte HTML5: Haciendo más sencillo el trabajo de los desarrolladores y logrando que su trabajo se vea igual en todos de los exploradores.

    · Compatibilidad con estándares modernos basados en CSS3, DOM L2 y L3, SVG, ECMASScript5, entre otros.

    Pasos para descargarlo

    El beta de Internet Explorer 9 puedes descargarse gratuitamente en castellano desde: www.labellezadeinternet.com Y en ingles http://www.beautyoftheweb.com dentro de 45 minutos (12pm del 15 de Septiembre de 2010)



  • WarNov Developer Evangelist

    Por qué los bloques Try-Catch sí afectan el performance

    • 7 Comments

    He escrito un post en el cual hablo de las Buenas Prácticas en Manejo de Excepciones .Net. Tuve un comentario muy interesante en el cual la persona me mencionaba que contrario a lo que yo afirmé en ese post, los bloques try..catch no generaban mayor impacto en el performance de la aplicación. Y me citó algunos artículos al respecto.

    Aunque los artículos obedecen a pruebas que en ocasiones producen casi los mismos resultados usando o no excepciones, puedo decirles muy respetuosamente que son bastante ingenuos porque no tienen en cuenta la estructura y funcionamiento del framework.net y sobre todo del optimizador de compilación.

    Así pues, les comento que para hacer la afirmación que hice, no ejecuté ninguna prueba. Solo hablé de una conclusión bastante lógica que se tiene al estudiar el comportamiento del optimizador de compilación del framework:

    Tomemos como ejemplo el siguiente código escuelero:
        
       

       1:      int cuenta = 1;
       2:      AlgunMetodo();
       3:      cuenta++;
       4:      OtroMetodo();
       5:      cuenta++;
       6:      Console.WriteLine(cuenta); 

    Cuando esto es compilado, el JIT de .NET efectivamente optimiza todo a:

       1:  AlgunMetodo();
       2:  OtroMetodo();
       3:  Console.WriteLine(3);

    Que obviamente corre enormemente más rápido.

    Sin embargo, para poder mantener las reglas de ordenamiento de memoria distribuida a través de hilos durante el tiempo de ejecución y compilación el CLR deshabilita TODA OPTIMIZACION que afecte el orden de lecturas y escrituras del CIL en los bloques protegidos. Los bloques protegidos conocidos también como regiones protegidas, bloques resguardados o bloques “try”.

    Esto en castellano sencillo nos indica que el JIT no puede optimizar código metido en bloques try..catch. Es por esto que recomiendo reducir el uso de excepciones al mínimo necesario. Y usarlas solo para solucionar problemas no relativos a negocio, que se pueden solventar simplemente con un algoritmo más inteligente.

    También por esto menciono que esos artículos son ingenuos, porque para hacer una prueba fehaciente deberíamos incluir un algoritmo de uso común en el cuál la optimización sí marca la diferencia.

    Así que si usamos el try-catch tendríamos:

       1:      int cuenta= 1;
       2:      try
       3:      {
       4:          AlgunMetodo();
       5:          cuenta++;
       6:          OtroMetodo();
       7:          cuenta++;
       8:      }
       9:      finally
      10:      {
      11:          Console.WriteLine(cuenta);
      12:      } 

    En este caso, al carecer de optimizaciones, la variable inicia con el valor de 1, luego se ejecuta AlgunMetodo(), luego la variable cuenta se vuelve a ajustar, luego OtroMetodo(), luego una tercera actualización y finalmente se escribe el calor de una variable, que cuesta más en ciclos de procesador, que escribir una constante. En síntesis, estamos desperdiciando ciclos.

    Estas optimizaciones que mostré aquí son de las mas sencillas que hace el JIT; pero no son las únicas; existen muchas otras optimizaciones que se pierden dentro de los bloques try..catch. Súmenle a esto le hecho de que efectivamente estas instrucciones consumen más memoria (poca o mucha pero la consumen) y as’;i podrán concluir por qué es mejor usarlas muy prudentemente.



Page 1 of 1 (6 items)