updown.io – Website monitoring, simple and inexpensive

submited by
Style Pass
2024-11-17 09:00:10

In the previous article I discussed about my upgrade process from Ruby 3.1 to ruby 3.3, discovered a potential regression in a specific scenario, and ended up with synthetic benchmark results looking pretty great:

After running it in production for the last 2 days now let's see how the numbers compares with the benchmark made previously:

Note: in production there's only a fixed number of requests/s so it's the CPU usage which decreased instead of the req/s increasing. But for this chart in order to make it easier to compare with the benchmark, I normalized the fixed req/s by the CPU usage to get an estimate "maximum req/s" for one server.

🎉 This is great, I'm getting a 32% lower CPU usage, which means that on the same CPU I can execute around 48% more requests/second (yes these numbers are not supposed to be same, because a 50% decrease in CPU usage would mean you can run twice as many requests so +100% req/s) This is equivalent and even slightly better than the benchmark, most likely because the servers I'm running it on are shared CPU VPS, so they are overselling CPU cores (and which are actually threads not cores). So basically the more you use them the slower each CPU "core" gets.

🎉 Also as you can see I'm getting a 21% decrease in memory usage !! and that's with YJIT enabled in 3.3.5 and no YJIT in 3.1.2.

Leave a Comment