HFT, un caso práctico de Performance Tuning

Hace poco escribía sobre la dificultad de encontrar de encontrar un escenario donde aplicar técnicas de análisis y mejora de rendimiento. Basta hablar para que venga un proyecto que te haga cerrar la boca :-) . Lo que me ha tocado es un proyecto de High Frequency Trading (HFT) donde se compra-venden divisas y la latencia es fundamental.

Sin entrar en muchos detalles, este es un negocio muy competitivo donde solo los mejores ganan, y donde cada microsegundo pueden suponer millones de euros.

Ahora el proyecto está en fase de implmentación y pruebas, y es de esperar que en las próximas semanas llevemos unas pruebas para determinar qué latencia conseguimos en cada transacción y qué se puede hacer para mejorarla.

Las guías de referencia y buenas prácticas que he consultado hasta ahora recomiendan lo siguiente:

Del lado del hardware (BIOS, procesadores, RAM, etc) :

  • Desactivar hyperthreading.
  • Desactivar cores de cada CPU si no son necesarios.
  • Elegir módulos de memoria grandes (ej mejor uno de 16Gb que dos de 8Gb).
  • Desactivar todos los estados de ahorro de energía de los procesadores.
  • Desactivar el máximo posible de SMIs (System Management Interrupts).
  • Desactivar la revisión de fallos en módulos de RAM, y bajar la frecuencia de refresco CAS si es posible.

También incluyo unos cuantos recursos interesantes que encontré preparando el examen de certificación:

La preparación del examen se puede hacer en entornos virtuales; en mi caso lo hice bajo Fedora 17 con KVM. La parte de storage se puede hacer con RHEL6 "pelado", la parte de GlusterFS se puede hacer con los paquetes de gluster de EPEL y la parte de cluster se puede excepto la configuración de dispositivos de fencing.

Happy hacking ;-)