What you are saying sounds like an assertion that the problem described here[1] - by Vicent Marti - that packfiles aren't contiguous blocks of data and so every fetch fans out to more fetches from the client - is not actually a problem? Or is there an innovation in zerofs that somehow solves this for git? From what I can see it offers NFS and NBD interfaces and GitHub tried and rejected both of those very early on.
The problem he described seems consistent with known patterns from datalake storage architectures, its a big part of why columnar storage is the only game in town for most use cases.
This is why TFA has a lot of interest here - he has changed the storage layout of git packfiles to a columnar model to address this challenge.
I’m not saying the access pattern isn’t real. I’m saying it largely doesn’t matter in practice.
If Git repos were routinely terabytes in size, this would be a much harder problem. But the vast majority of repos are <1GB, and at that scale caching dominates. Even with imperfect locality, you can cache enough of the working set that those reads don’t turn into s3 round trips.
In a low-latency environment, I haven’t found filesystem round trips themselves to be an issue for Git workloads either.
Do you have any benchmark data you can share?
What you are saying sounds like an assertion that the problem described here[1] - by Vicent Marti - that packfiles aren't contiguous blocks of data and so every fetch fans out to more fetches from the client - is not actually a problem? Or is there an innovation in zerofs that somehow solves this for git? From what I can see it offers NFS and NBD interfaces and GitHub tried and rejected both of those very early on.
The problem he described seems consistent with known patterns from datalake storage architectures, its a big part of why columnar storage is the only game in town for most use cases.
This is why TFA has a lot of interest here - he has changed the storage layout of git packfiles to a columnar model to address this challenge.
[1] https://cursor.com/blog/git-at-any-scale#git-without-packfil...
I’m not saying the access pattern isn’t real. I’m saying it largely doesn’t matter in practice.
If Git repos were routinely terabytes in size, this would be a much harder problem. But the vast majority of repos are <1GB, and at that scale caching dominates. Even with imperfect locality, you can cache enough of the working set that those reads don’t turn into s3 round trips.
In a low-latency environment, I haven’t found filesystem round trips themselves to be an issue for Git workloads either.