HHVM

From mediawiki.org
This page is a translated version of the page HHVM and the translation is 82% complete.
Outdated translations are marked like this.
Véase HHVM/Acerca de para obtener una descripción más breve y la publicación del blog de diciembre de 2014 sobre "Cómo hicimos la edición de Wikipedia dos veces más rápido" para obtener más información sobre HHVM, sus beneficios y una mirada retrospectiva al trabajo de implementación.
En septiembre de 2017, Facebook anunció que HHVM no apuntaría a la compatibilidad con PHP en el futuro.[1] Después de la discusión,[2] WMF adoptó un plan para migrar el clúster de producción de WMF a PHP 7. La compatibilidad con HHVM se ha eliminado de MediaWiki. Véase task T176209 y task T192166.

HHVM es una herramienta de interpretación de PHP (concretamente una máquina virtual que compila el código de bytes de PHP a las instrucciones nativas en tiempo de ejecución) que se implementó en los servidores de Wikimedia en 2014, lo que reduce el tiempo de carga de: cualquier página que vea mientras está conectado, y para guardar las páginas que hayas editado tanto como si hubieras iniciado sesión o no.

Hoja de ruta

HHVM es una nueva forma para que los sitios web ejecuten MediaWiki (escrito en PHP). A veces se le conoce por su nombre completo HipHop Virtual Machine (en inglés Máquina Virtual HipHop), y tiene un compilador en tiempo de ejecución (JIT). HHVM debe acelerar la visualización de la página para los usuarios que hayan iniciado sesión y también acelerar el guardado de páginas editadas para todos los usuarios.

Esta página trata sobre el trabajo patrocinado por Wikimedia sobre el soporte de HipHop en MediaWiki y su implementación en los wikis de producción de Wikimedia.

Históricamente, el compilador HipHop fue un proyecto de Facebook que involucró el compilamiento del código PHP en C++ con el fin de acelerar el lenguaje. Desde entonces, Facebook ha abandonado este proyecto, y ahora sus esfuerzos de desarrollo se centran en HHVM en su lugar.

Este es el plan general para implementar HHVM en el clúster de producción en 2014:

  • Implementación en Beta Cluster (trabajo actualmente en curso, en paralelo con otro trabajo) Yes Hecho
  • Semana del 21 de julio: el despliegue del funcionamiento de trabajo en la producción Yes Hecho
  • Implementar en el servidor de aplicaciones test.wikipedia.org Yes Hecho
  • Implementar el módulo Varnish permitiendo la implementación parcial en una fracción de los servidores de aplicacionesYes Hecho
  • Implementación limitada a un pequeño número de servidores de aplicaciones Yes Hecho
  • Acelerar la implementación a más servidores de aplicaciones hasta que la mayoría de los servidores utilicen HHVMYes Hecho
  • Implementar al resto de serviciosYes Hecho

Trabajo de HHVM

En Phabricator: Open tasks, All tasks.

Justificación

Es un fenómeno bien estudiado que incluso pequeños retrasos en el tiempo de respuesta (por ejemplo, la mitad de un segundo) pueden dar lugar a fuertes disminuciones en la retención de usuarios de la web.[3][4][5][6] Como resultado, los sitios web populares como Google y Facebook invierten mucho en iniciativas de rendimiento del sitio, y como resultado, siguen siendo populares. Antiguamente los sitios populares (como Friendster) sufrían debido a la falta de atención a estos problemas.[7][8] Wikipedia y sus proyectos hermanos deben seguir siendo utilizables y receptivos para que el movimiento pueda sostener su misión.

Facebook, como gran usuario de PHP, ha reconocido este problema e invirtió mucho[9] en una solución: HHVM, una máquina virtual que compila el código de bytes de PHP con instrucciones nativas en tiempo de ejecución, la misma estrategia utilizada por Java y C# para lograr sus ventajas de velocidad. Estamos bastante seguros de que esto también dará como resultado grandes mejoras de rendimiento en nuestros sitios.

¿Qué hace HipHop por nuestros usuarios finales?

MediaWiki está escrito en PHP, un lenguaje que se interpreta en tiempo de ejecución. La sobrecarga de ejecutar este código PHP cada vez que alguien visita una página requiere el uso de servidores de almacenamiento en caché, ejecutando software como Varnish, que almacena el HTML generado al ejecutar este PHP, de modo que PHP no tiene que ejecutarse cada vez que se visita una página. Estos cachés solo sirven a los usuarios que no han iniciado sesión.[10][11] Las acciones que no se ven afectadas por el caché, y por lo tanto se ven afectadas por el tiempo de ejecución del código PHP, incluyen:

  • Cualquier página que vea mientras está conectado.
  • Páginas guardadas que hayas editado, ya sea que hayas iniciado sesión o no.

Por lo tanto, cualquier acción que podamos tomar para reducir el tiempo que toma el código PHP de MediaWiki también disminuirá los tiempos de carga de nuestro sitio para todos nuestros usuarios registrados y cualquier persona que edite anónimamente.

HipHop fue escrito para ser un intérprete de PHP más rápido y eficiente que nuestro intérprete actual (Zend). Esperamos que al implementar HipHop como un reemplazo para Zend, nuestros usuarios noten un aumento tangible en el rendimiento de nuestros sitios.

¿Cómo afecta nuestro trabajo en HipHop a los desarrolladores de MediaWiki?

En nuestro rápido inicio del trabajo inicial, que se que se debe haber terminado a fines de marzo de 2014, esperamos hacerlo para que cualquiera pueda elegir usar HipHop en Beta Cluster en lugar de Zend. Esto será sobre una base totalmente optativa que puede ser deshabilitada en cualquier momento. Esto permitirá que el equipo de MediaWiki Core evalúe el rendimiento de HipHop contra el de Zend directamente utilizando nuestra infraestructura de prueba actual, en lugar de estimar los aumentos de rendimiento teóricos. También creará un entorno de desarrollo que nos ayudará a ver cuánto trabajo se necesita para hacer que HipHop sea compatible con MediaWiki, y como tal, nos permite hacer una estimación de cuánto tiempo nos tomará hacer que HipHop se mantenga en producción, como un reemplazo completo de Zend.

Para otros desarrolladores de MediaWiki, la consecuencia de que HipHop se implemente de esta manera es que si utilizan Beta Cluster como un entorno de prueba, les resultará trivial probar cómo funcionan sus parches utilizando HipHop en lugar de Zend, si así lo desean. Sin embargo, para minimizar la interrupción de nuestro trabajo, la naturaleza opt-in de la infraestructura permitirá que los desarrolladores puedan continuar desarrollando una actitud totalmente independiente de la futura migración a HipHop si así lo desean.

Véase también

Notas y referencias

  1. Max Wang, "El futuro de HHVM"
  2. "HHVM vs. Zend divergence" on wikitech-l
  3. [$radar "Bing and Google Agree: Slow Pages Lose Users"] - Brady Forrest - O'Reilly Radar
  4. [$glinden Greg Linden's blog: "Marissa Mayer at Web 2.0"] - Marissa Mayer pointed out that a change from 0.4 seconds to 0.9 seconds in response time from Google caused a 20% drop in revenue and traffic.
  5. "Bing and Google Agree: Slow Pages Lose Users" - Brady Forrest - O'Reilly Radar
  6. Greg Linden's blog: "Marissa Mayer at Web 2.0" - Marissa Mayer pointed out that a change from 0.4 seconds to 0.9 seconds in response time from Google caused a 20% drop in revenue and traffic.
  7. "[$nytimes Wallflower at the Web Party]", New York Times, October 15, 2006. Quote: "Kent Lindstrom, now president of Friendster, said the board failed to address technical issues that caused the company’s overwhelmed Web site to become slower."
  8. "Wallflower at the Web Party", New York Times, October 15, 2006. Quote: "Kent Lindstrom, now president of Friendster, said the board failed to address technical issues that caused the company’s overwhelmed Web site to become slower."
  9. http://www.wired.com/wiredenterprise/2013/06/facebook-hhvm-saga/
  10. Por definición, a los usuarios que han iniciado sesión no se les pueden servir páginas desde un caché estático, ya que la página que se les proporciona debe incluir HTML específico del usuario, como su nombre de usuario en la parte superior derecha de la página. Desafortunadamente, esto crea una situación en la que simplemente el inicio de sesión provoca una disminución tangible en el rendimiento de nuestros sitios para usted.
  11. By definition, users that are logged in cannot be served pages from a static cache, as the page served to them must include user-specific HTML such as their username at the top right of the page. This, unfortunately, creates a situation where simply logging in causes a tangible decrease in how well our sites perform for you.