Nix Hackers | 902 Members | |
| For people hacking on the Nix package manager itself | 189 Servers |
| Sender | Message | Time |
|---|---|---|
| 29 Jul 2021 | ||
| the limitation i'm running into right now is that xz doesn't have a "rsyncable" mode the way gzip and zstd does | 07:02:08 | |
| It depended on the client having a full list of all the NARs / patches available on the server (which used to be how substitution worked, before the binary cache). There's a paper about it: https://edolstra.github.io/pubs/eupfcdm-cbse2005-final.pdf | 07:09:49 | |
| I was looking at either a zsync or casync mechanic (zsync is less intrusive to the existing cache structure and requires Range requests; casync requires more requests, but also allows for space savings on the server with cross-package dedup). I have a PoC to measure how much this saves and get some metrics. Thanks for the paper, reading.... | 07:15:47 | |
| I'm not sure if the server-side savings will be feasible in practice for cache.nixos.org. I suspect we'll want to keep the full downloads there anyway. | 07:51:30 | |
| Vladimír Čunát: that's why i'm leaning toward the zsync-style approach where the full-downloads are kept. Though i'm open to thoughts/ideas. | 08:06:51 | |
| Probably. I'd try the schemes on It's an earlier idea but I never got to check the effect experimentally. The point is that on typical rebuilds the majority changes in NAR contents is replacement of pairs of nix-store hashes. One might hope that compression schemes like gzip will squash such differences to fewer positions. | 08:12:12 | |
| * Probably. I'd try the schemes on It's an earlier idea but I never got to check the effect experimentally. The point is that on typical rebuilds the majority of changes in NAR contents is replacement of pairs of nix-store hashes. One might hope that compression schemes like gzip will squash such differences to fewer positions. | 08:12:24 | |
| I also played with ideas around (forward) error correction, but zsync and similar sounded more realistic. | 08:13:56 | |
| another annoyance: i don't think libarchive has options to enable rsyncable, but gzip and zstd support it. | 08:17:16 | |
| 🤔 I guess the first step should be to test how much it helps. Perhaps even "manually" on some well-chosen NAR pairs. Perhaps using libzstd directly, there it seems to be in the API at a quick glance, though just as na experimental feature so far. | 08:25:31 | |
| I haven't thought yet if the zstd compression scheme is suitable for this idea (contrary to gzip). | 08:26:22 | |
| * I haven't thought yet if the zstd compression scheme is suitable for this idea (contrary to gzip), but hopefully so. | 08:26:37 | |
| i did a bit manually.... packages that are close enough to each other can be 50-90% same | 08:26:38 | |
| large packages are best, as they only change in small areas at a time (blender,firefox,systemd,linux,vim,emacs) | 08:27:52 | |
| And you did these tests on uncompressed NARs, right? | 08:28:57 | |
| small version bumps are best. If the change is only in self-references it should be picked up as a dup by the new CAS system | 08:29:46 | |
| i did both uncompressed NARs and "zstd --rsyncable" NARs. | 08:30:13 | |
| I suspect that typically the package version is even the same but some dependencies have changed. | 08:30:37 | |
| I've convinced myself it would work and be very beneficial in certain cases, but I'm not sure about the cost-benefit in terms of maintaining a new store backend, adopting another format/library, alternatives. | 08:37:01 | |
| 16:25:14 | ||
| 16:25:54 | ||
| 30 Jul 2021 | ||
Hmm, my running nixStable daemon with nixUnstable utilities encounters quite some issues. Again: are they considered bugs, i.e. is such a combination meant to be supported? | 08:15:14 | |
| I’d say these are definitely bugs | 08:22:48 | |
| 08:32:52 | ||
| 10:32:57 | ||
| 10:33:04 | ||
| 10:35:19 | ||
| 10:35:45 | ||
| 1 Aug 2021 | ||
| 08:04:45 | ||
| Example:
| 15:00:40 | |