BizTalk 2004 y Hyperthreading

Si bien hoy en día los procesadores son mas potentes (aunque es relativo ya que las aplicaciones también requieren mas recursos cada vez), el hyperthreading (HT) es una característica interesante porque impacta los sistemas de cómputo a varios niveles, de los cuales podemos mencionar dos.

  1. Licenciamiento. Impacto en costos.
  2. Aplicaciones. La programación de la aplicación debe ser la adecuada para aprovechar los recursos, esto es si tenemos un servidor con "n" procesadores, el desarrollar en multithreading será una buena práctica y nuestro cliente nos agradecerá por aprovechar los miles de dólares que se gasto en su server (exagerando un poco para que se vea el punto).

Entrando en tema, proponiendo un escenario donde tenemos una solución basada en BizTalk y usaremos un server con un procesador con tecnología HT, lo cual resulta para fines computacionales que tenemos 2 procesadores lógicos sin perder de vista que el cache y la memoria se comparten entre ambos; que es lo que podemos esperar?.

Si hablamos de la edición Standar o Partner, que solo soportan 1 procesador, lo que sucederá es que solo se empleará un procesador lógico y el segundo quedará desaprovechado lo que evita que BizTalk pueda usar todos los recursos disponibles en el procesador físico, esto es teóricamente hablando aunque se ha demostrado que se obtiene mejor performance al desactivar el HT.

La parte entretenida vienen cuando tenemos la edición Enterprise, ya que estaremos usando ambos procesadores lógicos. Lamento decirles que esto no es una garantía de mejor tiempo de procesamiento porque aunque tengamos mas poder de cómputo con el HT, como mencione, el cache y la memoria son las misma para ambos procesadores y en esta parte BisTalk es medio caprichoso ya que le gusta mucho usar la memoria (le deja mucho trabajo por hacer a cada thread) por lo que entre mas actividades se generan mas threads "pesados" y si recordamos que el número de threads en el CLR esta en función del número de procesadores, pero no en el caso de HT, ya que el CLR todavía no esta habilitado para HT. Esto genera un conflicto entre el número de threads que BizTalk cree que puede generar y los que el CLR realmente puede crear.

El resultado es que tenemos una pobre utilización de recursos (cache, memoria, etc) y hace que el performance en el sistema se vaya degradando conforma a la carga, claro que solo es cuando se tiene el HT encendido.

En general todavía hay algo de controversia con la tecnología de HT, pero cuando sus clientes quieran comprar un procesador con HT, podrán tomar una mejor desición a las características de la solución.