diff options
author | Casey Ransom <casey@dailykos.com> | 2021-06-21 22:58:07 -0400 |
---|---|---|
committer | Casey Ransom <casey@dailykos.com> | 2021-06-21 22:58:07 -0400 |
commit | c3f28aed94ba37279d02b1de5eb15b8000754c5d (patch) | |
tree | 67437eb4d9950e2c61dc726d706e23330bc919da /nixos/lib/make-disk-image.nix | |
parent | 09ee9f4c72d8b564bd6f3e26f1911404883a6a61 (diff) |
make-disk-image: Reduce forking
The disk image calculator was using find + exec forking du for every file in the disk image, making it very slow. Change du to accept files, nul delimeted on stdin to speed it back up. Before change: nix-build nixos/tests/image-contents.nix 9.71s user 1.06s system 8% cpu 2:13.11 total After change: nix-build nixos/tests/image-contents.nix 9.93s user 1.23s system 21% cpu 51.601 total
Diffstat (limited to 'nixos/lib/make-disk-image.nix')
-rw-r--r-- | nixos/lib/make-disk-image.nix | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index 7d40d3b5548e9..55643facea03d 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -278,7 +278,7 @@ let format' = format; in let additionalSpace=$(( $(numfmt --from=iec '${additionalSpace}') + reservedSpace )) # Compute required space in filesystem blocks - diskUsage=$(find . ! -type d -exec 'du' '--apparent-size' '--block-size' "${blockSize}" '{}' ';' | cut -f1 | sum_lines) + diskUsage=$(find . ! -type d -print0 | du --files0-from=- --apparent-size --block-size "${blockSize}" | cut -f1 | sum_lines) # Each inode takes space! numInodes=$(find . | wc -l) # Convert to bytes, inodes take two blocks each! |