Sysrepo performance

Sysrepo performance is tested by measure_perf utility that can be found in test directory of sysrepo repository. It runs multiple times each tested operations using data files of a different size. Then it prints the statistics.

The output of measurement consists of tables for three diffrent data sizes.

                Data file with one list instance
Operation                       |    ops/sec |   items/op | ops performed |  items/sec |  test time
---------------------------------------------------------------------------------------------------
Get item one leaf               |      13506 |          1 |         50000 |      13506 |       3.70
Get item first leaf             |      16919 |          1 |         50000 |      16919 |       2.96
Get item incl session start     |       5074 |          1 |         50000 |       5074 |       9.85
Get items all lists             |      14083 |          1 |         50000 |      14083 |       3.55
Get items iter all lists        |      10719 |          1 |         50000 |      10719 |       4.66
Get items ietf-if config        |       6732 |         12 |         50000 |      80779 |       7.43
Get subtree one leaf            |      11436 |          1 |         50000 |      11436 |       4.37
Get subtree incl session start  |       4081 |          1 |         50000 |       4081 |      12.25
Get subtrees all lists          |      17209 |          1 |         50000 |      17209 |       2.91
Get subtrees ietf-if config     |      25142 |         13 |         50000 |     326844 |       1.99
Set & delete one list           |       5588 |          6 |         50000 |      33530 |       8.95
Set & delete 100 lists          |         48 |        600 |          1000 |      28504 |      21.05
Commit one leaf change          |        700 |          1 |          1000 |        700 |       1.43
Libyang get one node            |     225026 |          1 |         50000 |     225026 |       0.22
Libyang get all list            |     561956 |          1 |         50000 |     561956 |       0.09


                Data file with 20 list instances
Operation                       |    ops/sec |   items/op | ops performed |  items/sec |  test time
---------------------------------------------------------------------------------------------------
Get item one leaf               |       8196 |          1 |         50000 |       8196 |       6.10
Get item first leaf             |      52350 |          1 |         50000 |      52350 |       0.96
Get item incl session start     |       2765 |          1 |         50000 |       2765 |      18.08
Get items all lists             |      10678 |         21 |         50000 |     224229 |       4.68
Get items iter all lists        |       8075 |         21 |         50000 |     169572 |       6.19
Get items ietf-if config        |       1971 |        240 |         50000 |     473114 |      25.36
Get subtree one leaf            |       9607 |          1 |         50000 |       9607 |       5.20
Get subtree incl session start  |       3694 |          1 |         50000 |       3694 |      13.53
Get subtrees all lists          |      10478 |         21 |         50000 |     220032 |       4.77
Get subtrees ietf-if config     |       4364 |        241 |         50000 |    1051669 |      11.46
Set & delete one list           |       8005 |          6 |         50000 |      48028 |       6.25
Set & delete 100 lists          |         46 |        600 |          1000 |      27528 |      21.80
Commit one leaf change          |        415 |          1 |          1000 |        415 |       2.41
Libyang get one node            |      48349 |          1 |         50000 |      48349 |       1.03
Libyang get all list            |     356209 |         21 |         50000 |    7480391 |       0.14


                Data file with 100 list instances
Operation                       |    ops/sec |   items/op | ops performed |  items/sec |  test time
---------------------------------------------------------------------------------------------------
Get item one leaf               |       6034 |          1 |         30000 |       6034 |       4.97
Get item first leaf             |      17942 |          1 |         30000 |      17942 |       1.67
Get item incl session start     |       1136 |          1 |         30000 |       1136 |      26.41
Get items all lists             |       5274 |        101 |         30000 |     532667 |       5.69
Get items iter all lists        |       3412 |        101 |         30000 |     344661 |       8.79
Get items ietf-if config        |        395 |       1200 |         30000 |     473677 |      76.00
Get subtree one leaf            |       5902 |          1 |         30000 |       5902 |       5.08
Get subtree incl session start  |       1217 |          1 |         30000 |       1217 |      24.65
Get subtrees all lists          |       5686 |        101 |         30000 |     574335 |       5.28
Get subtrees ietf-if config     |       1051 |       1201 |         30000 |    1262528 |      28.54
Set & delete one list           |       3602 |          6 |         30000 |      21615 |       8.33
Set & delete 100 lists          |         35 |        600 |          1000 |      20862 |      28.76
Commit one leaf change          |        140 |          1 |          1000 |        140 |       7.12
Libyang get one node            |      11954 |          1 |         30000 |      11954 |       2.51
Libyang get all list            |     153989 |        101 |         30000 |   15552898 |       0.19

ops performed = number of repetitions

ops/sec = (test time) / (op performed)

items/op = how many items was retrieved by the operation

items/sec = how many items was retrieved within one second

Shown output was created using a virtual machine running on a laptop:

Description of the tested operation:

Get item one leaf

example-module

retrieves one leaf from the last list instance in data file using sr_get_item

Get item first leaf

example-module

retrieves the first node in data file using sr_get_item

Get item incl session start

example-module

starts the session, retrieves one leaf from the last list instance in data file using sr_get_item and stops the session

Get items all lists

example-module

retrieves one node from each list instance in data file using sr_get_items

Get items iter all lists

example-module

retrieves one node from each list instance in data file usign sr_get_items_iter

Get items ietf-if config

ietf-interfaces

retrieves whole configuration using sr_get_items_iter

Get subtree one leaf

example-module

retrieves one leaf from the last list instance in data file using sr_get_subtree

Get subtree incl session start

example-module

retrieves the first node in data file using sr_get_subtree

Get subtrees all lists

example-module

retrieves one node from each list instance in data file using sr_get_subtrees

Get subtrees ietf-if config

ietf-interfaces

retrieves whole configuration using sr_get_subtrees

Set & delete 100 lists

example-module

sets 100 list instances with 3 leaves using sr_set_item and them deletes them (one by one) using sr_delete_item

Commit one leaf change

example-module

creates and deletes one leaf from the last list instance in the data file

sysrepo-performance (last edited 2016-10-06 15:31:50 by mnovakovic)