Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
#
# mgmt grouping analysis - 29/mar/2016
# By: James Shubin <james@shubin.ca>
# https://ttboj.wordpress.com/2016/03/30/automatic-grouping-in-mgmt/
#
* Comparison of different backends for package installation
* All times are in seconds. All tests ran with warm caches. Longer is worse.
* Data was collected from multiple runs but only one sample of each shown here.
* Accompanying spreadsheet with full data is also available.
#
# versions
#
$ time puppet --version
4.2.1
real 0m0.659s
user 0m0.525s
sys 0m0.064s
$ time ./mgmt --version
mgmt version 0.0.3-1-g6f3ac4b
real 0m0.007s
user 0m0.006s
sys 0m0.002s
$ time pkcon --version
1.0.11
real 0m0.013s
user 0m0.006s
sys 0m0.005s
$ time dnf --version
1.1.7
Installed: dnf-0:1.1.7-2.fc23.noarch at 2016-03-17 13:37
Built : Fedora Project at 2016-03-09 16:45
Installed: rpm-0:4.13.0-0.rc1.12.fc23.x86_64 at 2016-03-03 09:39
Built : Fedora Project at 2016-02-29 09:53
real 0m0.438s
user 0m0.379s
sys 0m0.036s
#
# single package, package check, package already installed
#
$ time sudo puppet apply pkg.pp
Notice: Compiled catalog for computer.example.com in environment production in 0.69 seconds
Notice: Applied catalog in 0.25 seconds
real 0m8.860s
user 0m4.325s
sys 0m1.262s
$ time sudo ./mgmt run --file examples/pkg1.yaml --converged-timeout=0
21:01:37 main.go:63: This is: mgmt, version: 0.0.3-1-g6f3ac4b
21:01:37 main.go:64: Main: Start: 1459299697979476457
21:01:37 main.go:190: Main: Running...
21:01:37 main.go:113: Etcd: Starting...
21:01:37 main.go:117: Main: Waiting...
21:01:37 etcd.go:113: Etcd: Watching...
21:01:37 etcd.go:113: Etcd: Watching...
21:01:37 configwatch.go:54: Watching: examples/pkg1.yaml
21:01:38 config.go:272: Compile: Adding AutoEdges...
21:01:38 config.go:533: Compile: Grouping: Algorithm: nonReachabilityGrouper...
21:01:38 main.go:171: Graph: Vertices(1), Edges(0)
21:01:38 main.go:174: Graphviz: No filename given!
21:01:38 pgraph.go:764: State: graphStateNil -> graphStateStarting
21:01:38 pgraph.go:825: State: graphStateStarting -> graphStateStarted
21:01:38 main.go:117: Main: Waiting...
21:01:38 pkg.go:245: Pkg[powertop]: CheckApply(true)
21:01:38 main.go:79: Converged for 0 seconds, exiting!
21:01:38 main.go:55: Interrupted by exit signal
21:01:38 pgraph.go:796: Pkg[powertop]: Exited
21:01:38 main.go:203: Goodbye!
real 0m0.387s
user 0m0.030s
sys 0m0.016s
$ time sudo pkcon install powertop
Resolving [=========================]
Starting [=========================]
Finished [=========================]
Fatal error: powertop-2.8-1.fc23.x86_64 is already installed
real 0m0.171s
user 0m0.026s
sys 0m0.019s
$ time sudo dnf install -y powertop
Last metadata expiration check: 1:23:41 ago on Tue Mar 29 20:04:29 2016.
Package powertop-2.8-1.fc23.x86_64 is already installed, skipping.
Dependencies resolved.
Nothing to do.
Complete!
real 0m2.980s
user 0m2.778s
sys 0m0.189s
#
# single package, package install, package not installed
#
$ time sudo puppet apply pkg.pp
Notice: Compiled catalog for computer.example.com in environment production in 0.69 seconds
Notice: /Stage[main]/Main/Package[powertop]/ensure: created
Notice: Applied catalog in 10.13 seconds
real 0m18.254s
user 0m9.211s
sys 0m2.074s
$ time sudo ./mgmt run --file examples/pkg1.yaml --converged-timeout=0
21:04:18 main.go:63: This is: mgmt, version: 0.0.3-1-g6f3ac4b
21:04:18 main.go:64: Main: Start: 1459299858287120473
21:04:18 main.go:190: Main: Running...
21:04:18 main.go:113: Etcd: Starting...
21:04:18 main.go:117: Main: Waiting...
21:04:18 etcd.go:113: Etcd: Watching...
21:04:18 etcd.go:113: Etcd: Watching...
21:04:18 configwatch.go:54: Watching: examples/pkg1.yaml
21:04:20 config.go:272: Compile: Adding AutoEdges...
21:04:20 config.go:533: Compile: Grouping: Algorithm: nonReachabilityGrouper...
21:04:20 main.go:171: Graph: Vertices(1), Edges(0)
21:04:20 main.go:174: Graphviz: No filename given!
21:04:20 pgraph.go:764: State: graphStateNil -> graphStateStarting
21:04:20 pgraph.go:825: State: graphStateStarting -> graphStateStarted
21:04:20 main.go:117: Main: Waiting...
21:04:20 pkg.go:245: Pkg[powertop]: CheckApply(true)
21:04:20 pkg.go:303: Pkg[powertop]: Apply
21:04:20 pkg.go:317: Pkg[powertop]: Set: installed...
21:04:25 packagekit.go:399: PackageKit: Woops: Signal.Path: /8442_beabdaea
21:04:25 packagekit.go:399: PackageKit: Woops: Signal.Path: /8443_acbadcbd
21:04:31 pkg.go:335: Pkg[powertop]: Set: installed success!
21:04:31 main.go:79: Converged for 0 seconds, exiting!
21:04:31 main.go:55: Interrupted by exit signal
21:04:31 pgraph.go:796: Pkg[powertop]: Exited
21:04:31 main.go:203: Goodbye!
real 0m13.320s
user 0m0.023s
sys 0m0.021s
$ time sudo pkcon install powertop
Resolving [=========================]
Loading cache [=========================]
Testing changes [=========================]
Finished [=========================]
Installing [=========================]
Querying [=========================]
Downloading packages [=========================]
Testing changes [=========================]
Installing packages [=========================]
Finished [=========================]
real 0m7.291s
user 0m0.052s
sys 0m0.029s
$ time sudo dnf install -y powertop
Last metadata expiration check: 1:22:03 ago on Tue Mar 29 20:04:29 2016.
Dependencies resolved.
==========================================================================
Package Arch Version Repository Size
==========================================================================
Installing:
powertop x86_64 2.8-1.fc23 updates 228 k
Transaction Summary
==========================================================================
Install 1 Package
Total download size: 228 k
Installed size: 576 k
Downloading Packages:
powertop-2.8-1.fc23.x86_64.rpm 212 kB/s | 228 kB 00:01
--------------------------------------------------------------------------
Total 125 kB/s | 228 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Installing : powertop-2.8-1.fc23.x86_64 1/1
Verifying : powertop-2.8-1.fc23.x86_64 1/1
Installed:
powertop.x86_64 2.8-1.fc23
Complete!
real 0m10.406s
user 0m4.954s
sys 0m0.836s
#
# three packages, package check, packages already installed
#
$ time sudo puppet apply pkg3.pp
Notice: Compiled catalog for computer.example.com in environment production in 0.75 seconds
Notice: Applied catalog in 0.26 seconds
real 0m8.571s
user 0m4.533s
sys 0m1.251s
$ time sudo ./mgmt run --file examples/autogroup2.yaml --converged-timeout=0
21:11:42 main.go:63: This is: mgmt, version: 0.0.3-1-g6f3ac4b
21:11:42 main.go:64: Main: Start: 1459300302188722023
21:11:42 main.go:190: Main: Running...
21:11:42 main.go:113: Etcd: Starting...
21:11:42 main.go:117: Main: Waiting...
21:11:42 etcd.go:113: Etcd: Watching...
21:11:42 etcd.go:113: Etcd: Watching...
21:11:42 configwatch.go:54: Watching: examples/autogroup2.yaml
21:11:42 config.go:272: Compile: Adding AutoEdges...
21:11:42 config.go:533: Compile: Grouping: Algorithm: nonReachabilityGrouper...
21:11:42 config.go:533: Compile: Grouping: Success for: Pkg[powertop] into Pkg[cowsay]
21:11:42 config.go:533: Compile: Grouping: Success for: Pkg[sl] into Pkg[cowsay]
21:11:42 main.go:171: Graph: Vertices(1), Edges(0)
21:11:42 main.go:174: Graphviz: No filename given!
21:11:42 pgraph.go:764: State: graphStateNil -> graphStateStarting
21:11:42 pgraph.go:825: State: graphStateStarting -> graphStateStarted
21:11:42 main.go:117: Main: Waiting...
21:11:42 pkg.go:245: Pkg[autogroup:(cowsay,powertop,sl)]: CheckApply(true)
21:11:42 main.go:79: Converged for 0 seconds, exiting!
21:11:42 main.go:55: Interrupted by exit signal
21:11:42 pgraph.go:796: Pkg[cowsay]: Exited
21:11:42 main.go:203: Goodbye!
real 0m0.740s
user 0m0.046s
sys 0m0.016s
$ time sudo pkcon install powertop sl cowsay
Resolving [=========================]
Testing changes [=========================]
Finished [=========================]
Fatal error: powertop-2.8-1.fc23.x86_64 is already installed
real 0m1.140s
user 0m0.031s
sys 0m0.017s
$ time sudo dnf install -y powertop sl cowsay
Last metadata expiration check: 1:28:09 ago on Tue Mar 29 20:04:29 2016.
Package powertop-2.8-1.fc23.x86_64 is already installed, skipping.
Package sl-5.02-2.fc23.x86_64 is already installed, skipping.
Package cowsay-3.03-19.fc23.noarch is already installed, skipping.
Dependencies resolved.
Nothing to do.
Complete!
real 0m2.980s
user 0m2.763s
sys 0m0.194s
#
# three packages, package install, packages not installed
#
$ time sudo puppet apply pkg3.pp
Notice: Compiled catalog for computer.example.com in environment production in 0.68 seconds
Notice: /Stage[main]/Main/Package[powertop]/ensure: created
Notice: /Stage[main]/Main/Package[sl]/ensure: created
Notice: /Stage[main]/Main/Package[cowsay]/ensure: created
Notice: Applied catalog in 33.02 seconds
real 0m41.229s
user 0m19.085s
sys 0m4.046s
$ time sudo ./mgmt run --file examples/autogroup2.yaml --converged-timeout=0
21:16:00 main.go:63: This is: mgmt, version: 0.0.3-1-g6f3ac4b
21:16:00 main.go:64: Main: Start: 1459300560994114252
21:16:00 main.go:190: Main: Running...
21:16:00 main.go:113: Etcd: Starting...
21:16:00 main.go:117: Main: Waiting...
21:16:00 etcd.go:113: Etcd: Watching...
21:16:00 etcd.go:113: Etcd: Watching...
21:16:00 configwatch.go:54: Watching: examples/autogroup2.yaml
21:16:03 config.go:272: Compile: Adding AutoEdges...
21:16:03 config.go:533: Compile: Grouping: Algorithm: nonReachabilityGrouper...
21:16:03 config.go:533: Compile: Grouping: Success for: Pkg[powertop] into Pkg[cowsay]
21:16:03 config.go:533: Compile: Grouping: Success for: Pkg[sl] into Pkg[cowsay]
21:16:03 main.go:171: Graph: Vertices(1), Edges(0)
21:16:03 main.go:174: Graphviz: No filename given!
21:16:03 pgraph.go:764: State: graphStateNil -> graphStateStarting
21:16:03 pgraph.go:825: State: graphStateStarting -> graphStateStarted
21:16:03 main.go:117: Main: Waiting...
21:16:03 pkg.go:245: Pkg[autogroup:(cowsay,powertop,sl)]: CheckApply(true)
21:16:03 pkg.go:303: Pkg[autogroup:(cowsay,powertop,sl)]: Apply
21:16:03 pkg.go:317: Pkg[autogroup:(cowsay,powertop,sl)]: Set: installed...
21:16:08 packagekit.go:399: PackageKit: Woops: Signal.Path: /8547_cbeaddda
21:16:08 packagekit.go:399: PackageKit: Woops: Signal.Path: /8548_bcaadbce
21:16:16 pkg.go:335: Pkg[autogroup:(cowsay,powertop,sl)]: Set: installed success!
21:16:16 main.go:79: Converged for 0 seconds, exiting!
21:16:16 main.go:55: Interrupted by exit signal
21:16:16 pgraph.go:796: Pkg[cowsay]: Exited
21:16:16 main.go:203: Goodbye!
real 0m15.621s
user 0m0.040s
sys 0m0.038s
$ time sudo pkcon install powertop sl cowsay
Resolving [=========================]
Starting [=========================]
Testing changes [=========================]
Finished [=========================]
Installing [=========================]
Querying [=========================]
Downloading packages [=========================]
Testing changes [=========================]
Installing packages [=========================]
Finished [=========================]
real 0m14.755s
user 0m0.060s
sys 0m0.025s
$ time sudo dnf install -y powertop sl cowsay
Last metadata expiration check: 1:30:10 ago on Tue Mar 29 20:04:29 2016.
Dependencies resolved.
==========================================================================
Package Arch Version Repository Size
==========================================================================
Installing:
cowsay noarch 3.03-19.fc23 updates 30 k
powertop x86_64 2.8-1.fc23 updates 228 k
sl x86_64 5.02-2.fc23 fedora 18 k
Transaction Summary
==========================================================================
Install 3 Packages
Total download size: 276 k
Installed size: 624 k
Downloading Packages:
(1/3): cowsay-3.03-19.fc23.noarch.rpm 86 kB/s | 30 kB 00:00
(2/3): sl-5.02-2.fc23.x86_64.rpm 52 kB/s | 18 kB 00:00
(3/3): powertop-2.8-1.fc23.x86_64.rpm 252 kB/s | 228 kB 00:00
--------------------------------------------------------------------------
Total 76 kB/s | 276 kB 00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Installing : cowsay-3.03-19.fc23.noarch 1/3
Installing : powertop-2.8-1.fc23.x86_64 2/3
Installing : sl-5.02-2.fc23.x86_64 3/3
Verifying : sl-5.02-2.fc23.x86_64 1/3
Verifying : powertop-2.8-1.fc23.x86_64 2/3
Verifying : cowsay-3.03-19.fc23.noarch 3/3
Installed:
cowsay.noarch 3.03-19.fc23 powertop.x86_64 2.8-1.fc23
sl.x86_64 5.02-2.fc23
Complete!
real 0m12.801s
user 0m5.347s
sys 0m1.089s
#
# output over time during a puppet run (filtered)
#
$ ps auxww | grep dnf
root 12118 27.0 1.4 417060 110864 ? Ds 21:57 0:03 /usr/bin/python3 /usr/bin/dnf -d 0 -e 0 -y install powertop
$ ps auxww | grep dnf
root 12713 32.7 2.0 475204 159840 ? Rs 21:57 0:02 /usr/bin/python3 /usr/bin/dnf -d 0 -e 0 -y install sl
$ ps auxww | grep dnf
root 13126 0.0 0.7 275324 55608 ? Rs 21:57 0:00 /usr/bin/python3 /usr/bin/dnf -d 0 -e 0 -y install cowsay
#
# pkg.pp
#
package { 'powertop':
ensure => present,
}
#
# pkg3.pp
#
package { ['powertop', 'sl', 'cowsay']:
ensure => present,
}
#
# pkg1.yaml
#
---
graph: mygraph
resources:
pkg:
- name: powertop
state: installed
edges: []
#
# autogroup2.yaml
#
---
graph: mygraph
resources:
pkg:
- name: powertop
meta:
autogroup: true
state: installed
- name: sl
meta:
autogroup: true
state: installed
- name: cowsay
meta:
autogroup: true
state: installed
edges: []
#
# data
#
| powertop check | powertop install | powertop,sl,cowsay check | powertop,sl,cowsay install |
|--------------+---------------------------+------------------------------+---------------------------+------------------------------|
| Tool / Try | 1 | 2 | 3 | average | 1 | 2 | 3 | average | 1 | 2 | 3 | average | 1 | 2 | 3 | average |
|--------------+-----+-----+-----+---------+------+------+------+---------+-----+-----+-----+---------+------+------+------+---------|
| puppet 4.2.1 | 8.4 | 8.5 | 8.8 | 8.6 | 18.2 | 18.5 | 19.4 | 18.7 | 8.7 | 8.2 | 8.5 | 8.5 | 40 | 45.3 | 41.2 | 42.2 |
| mgmt 0.0.3 | 0.3 | 0.4 | 0.3 | 0.3 | 12.7 | 13.3 | 13.1 | 13.0 | 0.7 | 0.6 | 0.7 | 0.7 | 15.8 | 15.6 | 21.5 | 17.6 |
| pkcon 1.0.11 | 0.2 | 0.2 | 0.2 | 0.2 | 9 | 8.7 | 7.2 | 8.3 | N/A | N/A | N/A | N/A | 15.7 | 14.7 | 16.3 | 15.6 |
| dnf 1.1.7 | 3 | 2.9 | 3 | 3.0 | 10.8 | 10.4 | 12.1 | 11.1 | 2.8 | 2.9 | 2.9 | 2.9 | 12.3 | 12.8 | 14.1 | 13.1 |
NOTE: The N/A values are because pkcon doesn't check and install all three
packages if one is already present, therefore the results there are erroneous!
#
# EOF
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment