Facebook muestra la mejora de rendimiento después de aplicar HipHop para PHP en sus servidores

Facebook muestra la mejora de rendimiento después de aplicar HipHop para PHP en sus servidores
Facebook Twitter Flipboard E-mail

Facebook comenzó a usar HipHop en todos sus servidores de producción(unos 30.000) a principios de 2010. Hace unos días comentaban en su blog de desarrollo las mejoras de rendimiento que ha obtenido hasta alcanzar la reducción del 50% de uso de CPU. Están orgullosos de la reducción de tiempos de CPU incluyendo a los nuevos desarrollos que han ido lanzado posteriormente.

El rendimiento es un factor muy importante en la eficiencia del servidor: la tasa de peticiones web servidas en un determinado periodo de tiempo. HipHop ha sido capaz de garantizar una mejora del 70% usando la misma infraestructura de hardware que antes de su implantación. Un dato espectacular que para una plataforma tan enorme como Facebook representa un importante ahorro de recursos y mejora de rendimiento.

Facebook creó HipHop como procesador de código que convierte el código escrito en PHP en código C++ puro. Este código luego se compila con gcc para obtener un código nativo equivalente a la funcionalidades escritas en PHP. De esta forma los servidores ahorran el tiempo que PHP suele necesitar para ejecutar el código interpretado y ejecutan directamente el código ya compilado en C++, mucho más rápido.

Facebook liberó HipHop como proyecto de software libre para que cualquiera pudiera mejorarlo y usarlo. Pero como recuerdan, es útil para compañías con una infraestructura muy grande escrita en PHP que deseen aprovechar C++ como lenguaje para su lógica compleja. No es una solución para todo el mundo.

Técnicas de optimización usadas por Facebook

La mejora de rendimiento se logra a través de diversas técnicas de optimización en el compilador de HipHop y en el sistema en tiempo de ejecución que han ido mejorando durante este tiempo:

  • Implementación de APC (Alternative PHP Cache) que utiliza Intel Threading Building Blocks. En ella se deshicieron de todas las operaciones de serialización/deserialización más costosas.

  • Se implementó una serialización más rápida y codificación de JSON. Optimizando las conversiones entre UTF8/UTF16, los accesos a las propiedades de los objetos, etc...

  • Menor número de recuentos de referencias. Así se ha optimizado cuando no es necesario esos recuentos en las cadenas o matrices. De este modo, una de las operaciones simples que más consumen CPU se ha rebajado considerablemente.

  • Código ejecutable compilado con HipHop a partir del PHP desplegado en los servidores web. Además de compactar todo el código para ser más reducido consiguiendo un ejecutable ligero y rápido.

  • Mejora de la asignación de memoria. Jemalloc, un malloc que permite el control del uso de memoria en HipHop controlando donde se asigna la memoria y donde puede ser cancelada.

  • Compilación más rápida. Se ha mejorado el análisis, optimización y generación de código. Hyves ha contribuido a tal fin consiguiendo que un binario de más 1GB pueda ser compilado en apenas unos 15 minutos, con la ayuda de distcc. Esto consigue que la fase de implementación mejore y pueda probarse mejor el código en un entorno real de ejecución sin pesados procesos.

Podéis echarle un vistazo a HipHop PHP en la página del proyecto en GitHub. Además de consultar la documentación de cómo construir e instalar en Ubuntu y ver cómo se ejecuta en el servidor, incluso ver cómo se compilaría Wordpress para usarse en una infraestructura grande.

Vía | Facebook Developers Más información | HipHop PHP

Comentarios cerrados
Inicio