Dyn Drvs Working Group #2
- Attendees: @jaen @ericson2314, @eveeifyeve @SergeK @tomberek @amaanq
infra
-
any progress?
-
@eveeifyeve: will test with small project on a local network
-
@tomberek: talked to Oxide, but nothing yet
-
@tomberek: we may also use the rack used by CUDA team. TODO: ask if that is feasible
-
@eveeifyeve: GHA may be good enough for now
-
@tomberek: nixgg as a stdenv replacement is looking more promising
-
@ericson2314: staging Hydra: https://staging-hydra.nixos.org/
- can ask infra if we can use
- might have to hook up special builders or mandatorySystemFeatures
-
How is Darwin support?
- BSD/Windows is low-priority for now
-
GitHub - nix-dyn-drv/nixpkgs: Nix Packages collection & NixOS ¡ GitHub
- Having a demo branch of Nixpkgs
- idea: have a patchset on top of nixpkgs
-
GitHub - nix-dyn-drv/overlay: Overlay of nixpkgs that uses dynamic derivations ¡ GitHub or overlay? (TODO: @omberek)
-
CUDA @SomeoneSerge
- looking to upgrade Hydra
- Nix pre-build-hook on remote builders donât have access to drv for GPU device exposing
- @ericson2314: we can expose drv in json format
- input drv â input src rewriting: witness of being able to run a build + schedule
- individual builds shouldnât need to know how something got produced
- only floating-CA cannot be re-written until built
- currently remote building requires trusted users
- this can be fixed with rewriting? Planning on a new mode of input-addressing
- We can provide the resolved derivation in JSON.
- @ericson2314: we can expose drv in json format
- interested to use the rust-queue-runner
- @tomberek: can we borrow the Oxide rack?
- @SergeK : let me check with team
- @tomberek : (async) what could we look at building that would be most valuable for CUDA to save rebulid time?
-
- will help @SomeoneSerge
- update CUDA hydra (on hetnzer)
-
Welcome! @jaen
- started with larger projects
- moving down to smaller projects
- making Nix patches to fix certain pathological situations
- hash scanning
- thread + connections
- finish subprocess/fork overhead fixes
- Made some progress on building kernel
Packages
- @tomberek: llvm
- builder-rpc exposes non-monadic build systems
- required 3 phase approach because the build needs to run a few intermediate products in the build itself
- @tomberek: configurePhase
- idea is to split a derivation into configure / build / check
- not as fine-grained, a good intermediate step
- might even be applicable in normal input-addressed Nix
- @eveeifyeve: gcc
- @lyndeno: kernel
- @jaen: chromium
- overhead is down to 200s
- currently functions!
- pytorch
- tensorflow
- stdenv
Rust
- @artemis, Obsidian, and @eveeifyeve (contact @joachin regarding libnix approach?) all interested. There is a proper project coming from Obsidian and a partner org. Everyone is waiting excitedlyâŚ
Cache?
- Cachix compatibility with CA or dyn-drv? Anyone know? (@domenkozar? @sandydoo?)
- Hydra itself for now can be good enough (esp. with S3)
- S3? Anyone got credits
Strategy
- @tomberek: Expose the overlay and keep updating it in order to broaden the audience and usage
- might need a cache to really end up working
- @jaen: usually overlay busts a cache. This well demonstrates the CA + dyn-drv benefit
- @ericson2314: If others can get the overlay, Iâll work on infra.
Async
- @lyndeno: Iâve been playing around with nixgg and adding functionality on top to make it work with a Linux kernel build. It now builds the Linux 6.18 kernel from nixpkgs and I have a VM test to confirm that it boots. Check GitHub - Lyndeno/nixgg ¡ GitHub on the âkernel-supportâ branch. On my machine it takes longer to perform the initial build. Incremental builds still take a while as the shims still have to run again, but the kernel is successfully split into over 20,000 derivations during the build process. My plans are to clean up the branch and make it mergable and set up my NixOS machines to run a kernel built this way. This will provide me an excuse to role my own kernel config and see how the dyndrv benefits scale depending on size.
Goals
- Broader scale testing
- Need a proof of value
- What will this be?
- show a cheaper rebuild
Tasks
- : @tomberek make overlay: GitHub - nix-dyn-drv/overlay: Overlay of nixpkgs that uses dynamic derivations ¡ GitHub
- : @ericson2314 check if we can use staging Hydra
- : @ericson2314 will help CUDA team
- : @eveeifyeve: contact drowse, libnix + Obsidian partner regarding Rust impl
Admin
- Every other Thursdays 16:00 EDT and 20:00 GMT and 22:00 CEST (contact @tomberek for invite)
- Matrix: nix dynamic derivations #nix-dyn-drv:ggpeti.com (can someone with perms help us move this to NixOS space?)