Ejecutando YJIT de Ruby 3.2 en producción en Discourse

En Discourse, hemos estado ansiosos por adoptar YJIT desde que el equipo de Infraestructura de Ruby on Rails de Shopify lo declaró listo para producción. Después de observar prometedores benchmarks locales, comenzamos a ejecutar nuestras aplicaciones Rails de producción con YJIT de Ruby 3.2 habilitado en clústeres seleccionados a principios de mayo de 2023. Luego pasamos un tiempo midiendo su rendimiento en el mundo real. Estamos emocionados de compartir los resultados positivos que observamos. Basándonos en estos hallazgos, ahora hemos habilitado YJIT en todo nuestro hosting, y los autoalojados pueden optar por hacer lo mismo.


Este es un tema de discusión complementario para la entrada original en https://blog.discourse.org/2023/05/running-ruby-3-2s-yjit-in-production-at-discourse/
21 Me gusta

Empezamos a evaluar Discourse+YJIT desde noviembre de 2022 y comenzamos a ejecutar Meta con YJIT de forma intermitente desde enero de este año. YJIT es una de las razones por las que aceleramos la actualización de Ruby 2.7 a Ruby 3.2 en unos pocos meses y estoy eufórico de que finalmente esté aquí. ¡Y aún más, ya que las mejoras que llegarán para Ruby 3.3 parecen aún mejores!

14 Me gusta

El desarrollo que está recibiendo Ruby es bastante impresionante… ¡Pensé que todos los chicos geniales estaban en Python hoy en día?! :sweat_smile:

Bien hecho, equipo, por mantenerse al día con la hoja de ruta de Ruby.

12 Me gusta

Probablemente una pregunta tonta, pero ¿el “archivo de definición de contenedor” es el archivo app.yml? Nunca antes lo había oído llamar así. ¡Gracias!

3 Me gusta

Sí, eso es. Usamos el nombre largo ya que algunas personas pueden renombrar o tener varios archivos “app.yml”.

5 Me gusta

Sería muy interesante una comparación entre Ruby 2.7 y 3.2 con JIT.

2 Me gusta

De mis notas del 4 de enero:

Lo volví a ejecutar ahora mismo

Ruby Servidor p categorías inicio tema usuario de categorías usuario de inicio usuario de tema administrador de categorías administrador de inicio administrador de tema
2.7.5 Unicorn 50 34 59 36 82 112 93 67 94 72
3.1.2 Unicorn 50 34 61 36 82 112 91 67 94 70
3.2.0 Unicorn 50 33 59 36 82 111 90 68 92 72
3.2.0 +YJIT Unicorn 50 25 42 29 67 89 77 58 76 56

Aceleración de 2.7 a 3.2 + YJIT

Aceleración categorías inicio tema usuario de categorías usuario de inicio usuario de tema administrador de categorías administrador de inicio administrador de tema
1.36 1.40 1.24 1.22 1.25 1.20 1.15 1.23 1.28

7 Me gusta

Y sin ningún dato medido y basándome en lo que uno o pocos usuarios sienten y ven.

Para mí, este foro ha ido más lento desde hace un tiempo. Veo un círculo giratorio por un momento casi cada vez que abro un tema. Claro, puede y casi seguramente proviene de los servidores y las distancias entre EE. UU. y Europa. Pero Meta es más lento que antes.

Empecé a usar YJIT en mi foro y cuando el servidor está en Alemania y los usuarios son finlandeses, todos dicen que todos los temas se abren más rápido. Eso es en realidad bastante gracioso porque no podemos ver cambios en los tiempos de carga puros por debajo de 200 ms.

1 me gusta

He estado pensando en el tiempo de carga de página fijo (o consistente) durante bastante tiempo. Donde los tiempos de carga para cada página y cada usuario sean lo más consistentes posible.
La información sobre los usuarios finlandeses es interesante, esto me hizo preguntarme si podríamos enrutar al usuario según la IP GEO o la latencia a un servidor diferente con una carga diferente solo para ahorrarles tiempo de respuesta.

1 me gusta

¿Estos resultados no incluyen el acceso a la base de datos?

Lo he habilitado en exiges.com.

Admito que no he realizado pruebas comparativas, pero puedo notar una diferencia en la forma en que se abren los temas y los hilos.

Debe ser un paso positivo, ya que los usuarios no me han informado de lo contrario :slight_smile:

1 me gusta

Sí, solo medimos el tiempo dedicado a ejecutar código Ruby, excluyendo las consultas a la base de datos y los comandos de Redis en los tiempos.

1 me gusta