Message ID | 87sgj8j9sf.fsf@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [bug#37305] Making system installation tests faster | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
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
Hello, this is a small update, to reflect recent changes to the code base. Maxim Cournoyer <maxim.cournoyer@gmail.com> writes: > 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: > > 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))))' > > > current-guix (old fashionned): > > 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))))' > > > new current-guix (guix self): > > 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)))))))))' There have been some changes made to the modules used in the benchmark code above. Here's an updated version: --8<---------------cut here---------------start------------->8--- time ./pre-inst-env guix system build -e \ '(begin (use-modules ((gnu ci) #:select (channel-source->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-source->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--- Time taken: real 7m39.912s user 0m57.129s sys 0m0.499s Compared to recycling the Guix development copy from the work tree: real 0m48.297s user 0m2.516s sys 0m0.229s Maxim
--- /tmp/ediffD0RQCf 2020-02-16 12:10:53.643411325 -0500 +++ /tmp/ediffKmWrdZ 2020-02-16 12:10:53.647411377 -0500 @@ -1,15 +1,18 @@ - /gnu/store/3g9bawa6c876lml0318g2knqdcv2ahv9-btrfs-root-on-subvolume-os.drv - /gnu/store/vswbrzp8ab5wz0fyzrj9j72mqcbd6c4a-installation.drv - /gnu/store/nf1wd5bgminylzvwq4mjs5293hpr1mmi-disk-image.drv + /gnu/store/l4z1363klr8a58qmm3pjzy2y5bxsr6bd-btrfs-root-on-subvolume-os.drv + /gnu/store/zlg6gxml4awbkbs2s6n1b0z3ysrqvy0h-installation.drv + /gnu/store/89vdpn33f47y0510im604snwfmbpswmm-disk-image.drv /gnu/store/45334hsl3hs5yx13x7qz1b1sc83vkbzj-module-import-compiled.drv - /gnu/store/dmi03i3jv9wwkw10fm57g7fq97kwlscf-module-import.drv /gnu/store/4cp5pqyn554rdmv9l4vfhnw7lgasv18q-raw-initrd.drv /gnu/store/vx147spsmrxkiy0qcmvxn341fpz4fmrv-init.drv /gnu/store/d6ri0lh953vaksiz5h8jx681h3i35vvm-module-import-compiled.drv - /gnu/store/b0gv94llsbvrlzkxs3naz7crcv1glxy1-grub.cfg.drv + /gnu/store/58912rdjjk4jdv767svb2axp0llmn8ch-linux-vm-loader.drv + /gnu/store/hvcm9abi0br38plwpngqlvw1l0060fni-builder-in-linux-vm.drv + /gnu/store/14bw0x4dq0g262vk4pjh3dlha6x3gz0s-module-import-compiled.drv + /gnu/store/nbkfy5wjpia5y7hj1p9j5hmbv42j4zp5-module-import.drv + /gnu/store/shc8hzzqi40pdpip0773i2g9x2apnn0h-grub.cfg.drv /gnu/store/gcslrfymsqsp6kqckla41zkyaa7fy9in-raw-initrd.drv /gnu/store/m8bbfcdn1irn7a41syy9arl1yz34hbln-init.drv - /gnu/store/hbfgqnralir92slqr9hhfw8cxqrlgv06-system.drv + /gnu/store/zifmvsbiw6x4gs15k29l1nvyzxkszafw-system.drv /gnu/store/0v4aq6yprk8az183rpdjx90jnxw3w838-parameters.drv /gnu/store/8daaamb92bbkpdwz96a19r81f7vnk40k-gc-roots.drv /gnu/store/f48dwgib52ciaq1nh06nhks6g7gvy7bx-system.drv @@ -44,56 +47,24 @@ /gnu/store/z0ik75q9nshaik97jsigd69vriyjijgp-shepherd.conf.drv /gnu/store/6pxsd37k5nl5viqadd57n0hah53nzcp7-shepherd-user-homes.go.drv /gnu/store/y9rj23r1xmyb5b4fwrh75pb5yr61clvp-shepherd-user-homes.scm.drv - /gnu/store/h0xbdk4hw1i4byy8xnrnaqmlwnfgrswz-profile.drv - /gnu/store/sxdgmvfjakapmbyqmxjgvarsaaxc2mw7-profile.drv - /gnu/store/hxcadzr771dzl99kylz64d9qz2qai8wd-guix-000000000.drv - /gnu/store/95lcx1xx41p4vcwqlwli7phny6hpp8b0-guix-manual.drv - /gnu/store/9yz0spp1h158zdh8wmg2r7sspnkm0qfc-guix-translated-texinfo.drv - /gnu/store/g6ggidnpaahws37qgx15mvkhfll0ns06-guix-daemon.drv - /gnu/store/jpb2jfk00q5nh5fg3k3cf6hcyw49zz84-guix-command.drv - /gnu/store/14zcma6hkqszaab37hda736i24r41rv4-guix-module-union.drv - /gnu/store/sfzd86425cl744lr58yh877i7z5qbd68-guix-000000000-modules.drv - /gnu/store/71a40hzi2d2wdn1vjl5amfq00caqlh3m-guix-system-tests-modules.drv - /gnu/store/kc3zg69yabaglvllj4l7hzgs72v9mk26-guix-system-tests.drv - /gnu/store/5zhgzvnyswm8g50aha95rvdx6dpmw329-guix-packages-base.drv - /gnu/store/d7df7qw5allqcm2qn75dn60wz1dg50cq-guix-system.drv - /gnu/store/ily3pqqvfkjz5622fxz6mxg31jbiqb21-guix-packages.drv - /gnu/store/xgpy1v810xi76w8ivpfi7gg5h7vg0ska-guix-cli.drv - /gnu/store/7ih7cmbhz1p7a4m7yrgy0s2jawqc666n-guix-packages-base-modules.drv - /gnu/store/j15kzs5m07pq3nmgqr5rr47cryq8arfs-guix-system-modules.drv - /gnu/store/rhk9cknm5wbk30slzzrr52app8mfn4a2-guix-packages-modules.drv - /gnu/store/x05mz632h3ph0k9n3s5y14m51qy3k929-guix-cli-modules.drv - /gnu/store/fs2g9iin23iq4505jsxjnrjaxnxp1wzl-inferior-script.scm.drv - /gnu/store/y4hv2s267zjz2gzja3cj428a7z1dln98-profile.drv - /gnu/store/kx5h4kxkz28gahlgkxni02i0rf8558vd-boot.drv - /gnu/store/nhi2s5zcyd5frjqag4jnp7fvhzbx6kd6-activate.scm.drv - /gnu/store/qnchikcfqx8hn0a7cn45f0pnf664s0jk-shepherd.conf.drv + /gnu/store/kammkm5z0ihjqalg0ijn69ffhdyzki47-profile.drv + /gnu/store/07kxlp8a99mvx2zidnlz6rm4ak2az8d0-guix-1.0.1-13.50299ad+.drv + /gnu/store/m9783fc7m360dk582b3mv2wgrsdz6amk-boot.drv + /gnu/store/3v1whxi5qkp9cyfc3vjpvziwc9ms7y7k-shepherd.conf.drv + /gnu/store/50halfax0zbiwpy47z6374ybh1mq1d5r-shepherd-guix-daemon.go.drv + /gnu/store/g4m4mqiz9z4yd2iwzmb6f81vidw0k4bg-shepherd-guix-daemon.scm.drv /gnu/store/7n4cqlsbn7hywlwssxvax6j6b57gm1q4-shepherd-user-homes.go.drv /gnu/store/dl333r3dshzi5nb4qqrvcsp2hmk3hd9p-shepherd-user-homes.scm.drv /gnu/store/i96lsb7shixcczc62bfadbg1g73qp38l-shepherd-udev.go.drv /gnu/store/yv3maqmnqqpiqj2jk5ss574pzvgh9jin-shepherd-udev.scm.drv /gnu/store/s5w901l6zl0ql800bc9cndnskqdhnsxm-shepherd-file-system--tmp.go.drv /gnu/store/a5nb6vhs86g76ww5bmpphi398pggnga7-shepherd-file-system--tmp.scm.drv - /gnu/store/sjn7zb56x72lh6i7arkh6gpd639g7d17-shepherd-guix-daemon.go.drv - /gnu/store/rww6z6m3nz6s7h54xklwj3plylg1f0yc-shepherd-guix-daemon.scm.drv - /gnu/store/lmbja82mymwsn3kmxwfy8g7s46xac443-linux-vm-loader.drv - /gnu/store/z8y0v374himjlig4qwjisv1xa7rk7r0l-builder-in-linux-vm.drv - /gnu/store/14bw0x4dq0g262vk4pjh3dlha6x3gz0s-module-import-compiled.drv - /gnu/store/nbkfy5wjpia5y7hj1p9j5hmbv42j4zp5-module-import.drv -The following grafts will be made: - /gnu/store/qn8j1cqp2lfvghiv4sy5rps4kv2hz02y-guile3.0-git-0.3.0.drv - /gnu/store/dnl877iincgcw7lw493h5nd4llxqjw7a-libgit2-0.28.4.drv + /gnu/store/nhi2s5zcyd5frjqag4jnp7fvhzbx6kd6-activate.scm.drv The following profile hooks will be built: - /gnu/store/96274clz8449s7s18a91sa31d1ilmi0p-fonts-dir.drv - /gnu/store/30lvdbci7v9zqgn3nqjy1vgbpv5k4b98-ca-certificate-bundle.drv - /gnu/store/b5dspr8576n0j3vl2cjsr7zrfdp380cw-guix-package-cache.drv - /gnu/store/chjdvqjbrnb7cqla43n5rvqia5d4f4mg-fonts-dir.drv - /gnu/store/kh7wixk3i5db2ym48ddyrdbggw8ccxp8-info-dir.drv - /gnu/store/x3bp2acfy04w9r9l11w30l9z0hpsii5a-manual-database.drv - /gnu/store/bhla9fihy35pgc3bwszfxvsfjir71v88-glib-schemas.drv - /gnu/store/isb4444058amfr4sipqmffcrgisx75gs-ca-certificate-bundle.drv - /gnu/store/l8qgqaxq1xcb8jk3lqmzzrfiv8hzpna1-xdg-desktop-database.drv - /gnu/store/x0vhd98kg66pzfwffbi45f76126by816-xdg-mime-database.drv - /gnu/store/xs4k7nmrpbjsy0a5k6lsbdxc2n4i23g4-info-dir.drv - /gnu/store/zffqfc9w73sy815av7hwincbqpl7hbkr-manual-database.drv -building /gnu/store/dmi03i3jv9wwkw10fm57g7fq97kwlscf-module-import.drv... + /gnu/store/4j2hrilvx5rfycqs1sccd39jy5yjhxy0-xdg-mime-database.drv + /gnu/store/4rdg1bi6xxn85zq5cjqc3bdfksx14913-info-dir.drv + /gnu/store/c59p1krnc51qlbr5vnxjx6bg3rrixca4-glib-schemas.drv + /gnu/store/drf1pi6m91b6qra3p6hrknfzh7gcd51z-fonts-dir.drv + /gnu/store/fwal8vsrjzpbwljnihvv66k9ikkfx2ma-xdg-desktop-database.drv + /gnu/store/jzp4ps09ipy0kcc6ybx5967vi3xlq7aa-manual-database.drv + /gnu/store/m7yl2xvk07l37l19wp2hfbvhzl3583ji-ca-certificate-bundle.drv