Skip to main content

Performance

These are benchmarks for sake. The implementation is in a separate repository at github.com/alajmo/sake-performance.

sake is between 6 and 8 faster than pyinfra and between 4 and 18 times faster than Ansible, depending on the number of hosts.

The benchmarks are generated by running each test 20 times and taking an average for each of the following metrics:

  • Elapsed Time: The elapsed real (wall clock) time (seconds) used by the process
  • CPU: Percentage of the CPU that this job got ((user + sys time) / tot time
  • Memory: Maximum memory (Megabyte) usage of the process during its lifetime

Ping

time time

Modules

time time

Test Case 1

A simple ping.

Graphs

time cpu mem

Data

Elapsed Time (seconds)

namesakepyinfraansible
10.1430.8880.602
30.1250.9480.621
50.1310.9510.637
80.1570.9720.671
100.1370.9680.701
250.1581.1170.957
500.1751.3641.419
1000.3201.8792.463
2000.5592.9144.308
3000.8264.0506.240
4001.1125.1488.137
5001.4006.33210.152

CPU (%)

namesakepyinfraansible
1168986
3198795
52887103
83490113
103492120
254896183
5048103236
10053113311
20052126332
30051136357
40049144361
50049152377

Memory (MB)

namesakepyinfraansible
1155655
3165655
5185655
8215856
10215855
25256055
50276156
100296358
200406861
300487265
400597670
500668076

Test Case 2

The following tasks are ran:

  1. Add a user
  2. Add a file
  3. Copy a file

Note, after the first command is ran, the subsequent commands won't do anything since the user and files already exists, so all tasks are idempotent.

Graphs

time cpu mem

Data

Elapsed Time (seconds)

namesakepyinfraansible
10.1561.5681.174
30.1591.4871.210
50.1751.4561.268
80.2031.4891.436
100.2461.4891.535
250.2742.1802.742
500.4392.9824.717
1000.6644.7118.947
2001.0068.37117.410
3001.42512.10826.110
4001.91115.79734.888
5002.44319.41844.075

CPU (%)

namesakepyinfraansible
1145467
3276586
53970104
85374124
106176138
257077236
5011186258
10016895305
200147101324
300138105339
400135109352
500157112365

Memory (MB)

namesakepyinfraansible
1155555
3195755
5205756
8215855
10225955
25256156
50296356
100346759
200457463
300558068
400668973
500769679