-
You can see in our benchmarks that there's some bizarre results in our test for The spike, then resolution, then return should be pretty suspicious. Regardless, the obvious thing to do would be to bisect these changes that occurred leading up to 6 Dec to understand why the performance characteristics changed so dramatically. And... there aren't any. There aren't any code changes being merged into libgit2 in the days leading up to 6 Dec. You can see the benchmark run on 5 Dec, where the Both runs are building and testing libgit2 https://github.com/libgit2/libgit2/commit/c86842f0a518cc15d7964027d01a4ae3bf9604db. So what did change? The GitHub-hosted runner. We run on So, somehow there's something different between I'll install Ubuntu 22.04 and Ubuntu 24.04 side-by-side in equivalently provisioned VMs on the same underlying machine and see if I can replicate these results. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
That sounds like a rabbit hole! Good catch though. Sounds like the beginning of another xz discovery - lets hope not. Curious to hear what you find |
Beta Was this translation helpful? Give feedback.
-
I spent some time adding profiling support to our benchmarks, and they can now produce flamegraphs (currently Linux-only), and can upload data to an artifact that you can then download. This lets you create a new invariant state, run benchmarks against it, and download the results (including the flamegraphs). This was a helpful addition, as it's very clear what's happening. Building and running on Linux 22.04: ![]() and Linux 24.04: ![]() OpenSSL initialization has gotten a lot more expensive, which is a tax that we don't need to pay when we're not doing any network traffic (and one that we wouldn't notice if we were). I've been musing about re-thinking Re-thinking library (and resource) initialization is something that I wanted to give some thought to, and this is additional motivation. |
Beta Was this translation helpful? Give feedback.
I spent some time adding profiling support to our benchmarks, and they can now produce flamegraphs (currently Linux-only), and can upload data to an artifact that you can then download. This lets you create a new invariant state, run benchmarks against it, and download the results (including the flamegraphs).
This was a helpful addition, as it's very clear what's happening. Building and running on Linux 22.04:
and Linux 24.04:
OpenSSL initialization has gotten a lot more expensive, which is a tax that we don't need to pay when we're not doing any network traffic (and one that we wouldn't notice if we were).
I've been musing about re-thinking
git_libgit2_init
, which is very helpful for h…