GNU bug report logs - #37305
[PATCH] Allow booting from a Btrfs subvolume.

Previous Next

Package: guix-patches;

Reported by: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Date: Thu, 5 Sep 2019 00:21:01 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 37305 <at> debbugs.gnu.org
Subject: [bug#37305] Making system installation tests faster
Date: Tue, 18 Feb 2020 16:27:25 -0500
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




This bug report was last modified 5 years and 33 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.