Skip to content
Snippets Groups Projects
  • Eelco Dolstra's avatar
    a583a2bc
    Run the daemon worker on the same CPU as the client · a583a2bc
    Eelco Dolstra authored
    On a system with multiple CPUs, running Nix operations through the
    daemon is significantly slower than "direct" mode:
    
    $ NIX_REMOTE= nix-instantiate '<nixos>' -A system
    real    0m0.974s
    user    0m0.875s
    sys     0m0.088s
    
    $ NIX_REMOTE=daemon nix-instantiate '<nixos>' -A system
    real    0m2.118s
    user    0m1.463s
    sys     0m0.218s
    
    The main reason seems to be that the client and the worker get moved
    to a different CPU after every call to the worker.  This patch adds a
    hack to lock them to the same CPU.  With this, the overhead of going
    through the daemon is very small:
    
    $ NIX_REMOTE=daemon nix-instantiate '<nixos>' -A system
    real    0m1.074s
    user    0m0.809s
    sys     0m0.098s
    a583a2bc
    History
    Run the daemon worker on the same CPU as the client
    Eelco Dolstra authored
    On a system with multiple CPUs, running Nix operations through the
    daemon is significantly slower than "direct" mode:
    
    $ NIX_REMOTE= nix-instantiate '<nixos>' -A system
    real    0m0.974s
    user    0m0.875s
    sys     0m0.088s
    
    $ NIX_REMOTE=daemon nix-instantiate '<nixos>' -A system
    real    0m2.118s
    user    0m1.463s
    sys     0m0.218s
    
    The main reason seems to be that the client and the worker get moved
    to a different CPU after every call to the worker.  This patch adds a
    hack to lock them to the same CPU.  With this, the overhead of going
    through the daemon is very small:
    
    $ NIX_REMOTE=daemon nix-instantiate '<nixos>' -A system
    real    0m1.074s
    user    0m0.809s
    sys     0m0.098s