[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#37305] Making system installation tests faster
From: |
Maxim Cournoyer |
Subject: |
[bug#37305] Making system installation tests faster |
Date: |
Tue, 18 Feb 2020 16:27:25 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hello Ludovic!
I have more benchmark results. Not to be compared with the previous
results, as these were executed on a much faster machine (24 cores vs 4
cores), with an SSD instead of a rotative disk.
Commands used:
current-guix/pre-built:
--8<---------------cut here---------------start------------->8---
time ./pre-inst-env guix system build -e \
'(begin
(use-modules
(gnu packages package-management))
(parameterize
((current-guix-package
(current-guix/pre-built)))
((@@
(gnu tests install)
operating-system-with-current-guix)
(@@
(gnu tests install)
%btrfs-root-os))))'
--8<---------------cut here---------------end--------------->8---
current-guix (old fashionned):
--8<---------------cut here---------------start------------->8---
time ./pre-inst-env guix system build -e \
'(begin
(use-modules
(gnu packages package-management))
(parameterize
((current-guix-package
(current-guix)))
((@@
(gnu tests install)
operating-system-with-current-guix)
(@@
(gnu tests install)
%btrfs-root-os))))'
--8<---------------cut here---------------end--------------->8---
new current-guix (guix self):
--8<---------------cut here---------------start------------->8---
time ./pre-inst-env guix system build -e \
'(begin
(use-modules ((gnu ci) #:select (channel-instance->package))
(guix monads)
(guix channels)
(guix store)
((guix status) #:select (with-status-verbosity))
((guix git-download) #:select (git-predicate))
(guix utils)
(gnu packages package-management))
(with-store store
(with-status-verbosity 2
(run-with-store store
(mlet* %store-monad
((source-dir -> "/home/mcournoyer/src/guix")
(source (interned-file source-dir
"guix-source"
#:recursive? #t
#:select? (or (git-predicate source-dir)
(const #t))))
(instance -> (checkout->channel-instance source))
(new-guix-current -> (channel-instance->package instance)))
(return (parameterize ((current-guix-package new-guix-current))
((@@ (gnu tests install)
operating-system-with-current-guix)
(@@ (gnu tests install) %btrfs-root-os)))))))))'
--8<---------------cut here---------------end--------------->8---
Methodology:
1. Break at each commit of the current change set, run make, and run the three
above commands in the order they appear.
2. Record the "real" component of the time results of each
commit/command in the table below.
| Commit |
current-guix/pre-built | old current-guix | new current-guix |
|--------------------------------------------------------------+------------------------+------------------+------------------|
| linux-boot: Ensure volatile root is mounted read-only. | 2m2.245s
| 13m39.669s | 3m47.066s |
| file-systems: Add a 'file-system-device->string' procedure. | 2m12.576s
| 13m42.906s | 3m43.212s |
| gnu: linux-boot: Refactor boot-system. | 1m53.928s
| 13m48.825s | 9m53.133s |
| file-systems: Represent the file system options as an alist. | 2m12.530s
| "" | 10m3.523s |
| gnu: linux-boot: Honor the "--root-options" kernel argument. | ""
| "" | 11m10.448s |
| gnu: linux-boot: Filter out file system independent options. | ""
| "" | 5m4.997s |
| bootloader: grub: Allow booting from a Btrfs subvolume. | 2m13.375s
| 13m44.671s | 3m38.815s |
|--------------------------------------------------------------+------------------------+------------------+------------------|
This machine appears to be 5 times faster (at this task) than the
previous one used, to give an idea of the time someone would have to
wait just to build the operating system to test. An x200 would be even
slightly slower that than.
One of the things that seems costly is rebuilding the documentation.
Maxim