From mvasko at cesnet.cz Wed Jul 10 13:59:23 2019 From: mvasko at cesnet.cz (=?utf-8?q?Michal_Va=C5=A1ko?=) Date: Wed, 10 Jul 2019 15:59:23 +0200 Subject: [sysrepo-devel] =?utf-8?q?Sysrepo_release_0=2E7=2E8_and_new_Sysr?= =?utf-8?q?epo_devel_merge?= Message-ID: <209b-5d25ef00-23-774ab180@52557438> Hi everyone, firstly, we have just released Sysrepo version 0.7.8 [1] and also all the other libraries libyang, libnetconf2, and netopeer2. There are few changes because they are just regular bugfix releases. More importantly, the new generation of Sysrepo should be finally ready for public testing so it was merged into the official repository replacing the devel branch [2]. It was written from scratch so you must delete this branch if you have sysrepo repository downloaded locally, a simple pull will not work. There are compatible versions of netopeer2 and libnetconf2 available in their branches devel-server and devel, respectively. There is no special version of libyang but you need the recent revision (latest release or current master or devel branch are fine). In summary, the old applications and libraries are in master branches, the new ones in devel. All the new applications have versions 1.0 while the old ones are 0.x. That means you can have both old and new libraries installed but you will NOT be able to compile against both versions because include header files are the same. Be aware that the new netopeer2 does not yet have all the features of the current netopeer2, namely: - TLS (listen, Call Home) - NACM (will be moved to netopeer2 from sysrepo) If you do not require these features, everything else that worked for the old netopeer2 should work. However, the new sysrepo should support everything that the old sysrepo supported (except iterative data retrieval for now, it should have much less use-cases anyway) and much more. Also, we have performed some basic benchmarks and it was both faster (2x) and required less memory (0.7x). If you can, please grab the new versions and test them, any feedback is appreciated. Some of the new features are but not limited to: - no censtral daemon sysrepod, just a library - threading model enhanced and defined - operational datastore - libyang data trees directly in API - state data retrieval much simplified - support for changing values before apply-changes (currently known as sr_commit()) - startup and candidate datastore subscriptions - multiple subscriptions to a single RPC/action When migrating a client from the old sysrepo, look at the text file CHANGES in the repository. It mentions specific API changes (most often just a renaming or minor parameter change) to look out for. However, it is best to start by reading the new documentation (generated by "make doc"), which is detailed and should be of great help to both new sysrepo users and the current ones. Kind regards, Michal [1] https://github.com/sysrepo/sysrepo/releases/tag/v0.7.8 [2] https://github.com/sysrepo/sysrepo/tree/devel From mvasko at cesnet.cz Mon Jul 22 13:21:34 2019 From: mvasko at cesnet.cz (=?utf-8?q?Michal_Va=C5=A1ko?=) Date: Mon, 22 Jul 2019 15:21:34 +0200 Subject: [sysrepo-devel] new sysrepo performance Message-ID: <5aa-5d35b880-2b-92f4c90@202556343> Hi, I have adjusted the measure_performance utility for benchmarking from the old sysrepo to work with the new one. It will soon be available in the repository as well, but it still needs a final polish. I have attached the results on my machine (Intel i7, SSD) for both the old and the new sysrepo. I was unable to run 3 test cases, these have all 0 in the new sysrepo results. "Get items iter all lists" test used an item iterator that is no longer available because there is little use for it. When communicating with a sysrepo client, all the data needs to be loaded anyway and since there is no daemon anymore, it all occurs in a single process. As for the 2 other use-cases "Set & delete one list" and "Set & delete 100 lists", they tested creating and then deleting the same node on a session without a commit. New sysrepo does not allow this (it is not a valid use-case) and even if it did, this operation is now restricted only to the session, no communication takes place of any kind, so there is little to test, anyway. Finally, regarding the results themselves, the performance gain is obvious. By far, the smallest improvement is 1.17x in "Event notification - store" test for a single node. However, for 100 nodes the improvement is 7.6x, so scalability is now much better with almost no slowdown. The highest improvement is a staggering 495.4x for "Commit one leaf change" for a single node. It is one of the most common use-cases and this result nicely illustrates how inefficiently and with a lot of redundant work the old sysrepo handles basic operations. We are hoping this benchmark will convince some of you to give the new sysrepo a try despite the initial migrating effort required. Kind regards, Michal PS: Since the release a few weeks ago, the new netopeer2-server now also supports NACM. -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: new_measure_perf.txt URL: -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: old_measure_perf.txt URL: