Comments (3)
In short, everything works differently when comparing these 2 versions so I really am not able to tell you more. But if I understand your use-case correctly and you are sending 5000, 10000, ... edit-config
requests for every measurement, that is a very inefficient way of working with data and we never really optimized that. Specifically, there is some overhead connected to every executed RPC, which is likely significantly higher in the current version but actual execution should not be slower. If you measure the use-cases some way, I could tell you more.
from sysrepo.
Hi,
Our test run is such that we are sending 1 entry per edit-config till the data tree has 60K entries, sequentially in one go. Once the test execution is completed, we then recorded the time taken by Nth request i.e 5000th, 1000th, 15000th.. and so on. We did the same steps for both old and the latest release and had the observation which we mentioned in our post.
Thanks and Regards.
Chinmaya Agarwal.
from sysrepo.
Okay, so I actually made the effort of trying to find out the exact reason for this difference. I tried a similar use-case to yours on both the current devel
and the versions you have used before and got 57 ms
vs 177 ms
, which is similar to your numbers just faster in both cases.
But, then I tried to measure the performance of the old versions using callgrind
and I failed. Ignoring the fact that I had to make some changes to even compile it and kept getting various internal and other errors, I ultimately realized that all the work is performed by sysrepod
so I would have to measure that (but it kept crashing on some assert) so I gave up. However, when I looked at callgrind
output of the current netopeer2, it included loading the previous JSON data because it was the first (and only) operation (that 5000th edit) that I executed so cache was not updated yet. When I then repeated the test with having the cache filled (I first sent an edit with 5000 instances, followed by another 1 instance), I got 55 ms
. So, I could not reproduce the slower performance under normal circumstances. My only explanation for your measurements is you creating a new NETCONF session for each edit, then the cache would never be used, I believe. In the old version, sysrepod
was caching the data so it would work.
TLDR; If you believe this performance difference to be accurate, please provide scripts and the complete steps to reproduce it.
from sysrepo.
Related Issues (20)
- Get on /ietf-netconf-acm:nacm fails without a get on /sysrepo-monitoring:sysrepo-state/connection/nacm-stats HOT 1
- Does libsysrepo-API not support access to multiple YANG databases of sysrepo? HOT 4
- Cannot change value using sr_apply_changes HOT 2
- `--init-data` fails validation on `min-elements` list HOT 2
- sysrepoctl YANG parse issue HOT 1
- Not able to fetch value operational data HOT 12
- factory-reset behavior HOT 2
- Spurious oper data callbacks on sr_get_items HOT 2
- `headers` test error: `Missing #include "compat.h" in file src/plugins/ds_mongo.c for function asprintf()`, and in `ds_redis.c` as well HOT 1
- Path is modified in ietf-netconf-acm module and it causes the nacm function to fail. HOT 8
- sr_apply_changes function return value HOT 6
- Question: can we subscribe to get-config and edit-config? HOT 2
- question: can we parse and print edit-config or edit-data before pushing into the sysrepo database. HOT 16
- installing the yang files with sysrepo HOT 3
- Unauthorized list entry deletion leaks information about datanode presence HOT 5
- When will 'sr_get_changes' be applied? HOT 4
- Installation error on openWRT 23.05 HOT 3
- Callback Function Receives Original Configuration During Deletion Despite Field Modification HOT 6
- Redundant parameters HOT 9
- Question about sr_connect performance HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sysrepo.