Scaling doc update
This commit is contained in:
parent
c4a8f98512
commit
6c2e880ab9
1 changed files with 15 additions and 9 deletions
|
|
@ -139,7 +139,7 @@ This section shows the results of the measurements as defined in [Tests](#tests)
|
||||||
### Profiling
|
### Profiling
|
||||||
|
|
||||||
An example profiling of the most demanding case was made: Put single restconf for with 5000 existing entries.
|
An example profiling of the most demanding case was made: Put single restconf for with 5000 existing entries.
|
||||||
The tool used is valgrind/callgrind with the following approximate result:
|
The tool used is valgrind/callgrind with the following approximate result (percentage of total cycles):
|
||||||
* from_rpc_callback 100%
|
* from_rpc_callback 100%
|
||||||
* from_client_commit 65%
|
* from_client_commit 65%
|
||||||
* candidate_commit 65%
|
* candidate_commit 65%
|
||||||
|
|
@ -155,7 +155,14 @@ The tool used is valgrind/callgrind with the following approximate result:
|
||||||
* xml_chardata_encode 12%
|
* xml_chardata_encode 12%
|
||||||
|
|
||||||
It can be seen that most cycles are spend in file copying and writing
|
It can be seen that most cycles are spend in file copying and writing
|
||||||
to file which explains the linear behaviour.
|
the existing datastore to file. This explains the linear behaviour, ie
|
||||||
|
the larger existing datastore, the larger number of cycles spent.
|
||||||
|
|
||||||
|
Why is the existing datastore accessed in this way? When a small PUT request is received, several things happen:
|
||||||
|
* The existing candidate database is modified with the change and written to disk. (35%)
|
||||||
|
* The difference between candidate and running is computed (13%)
|
||||||
|
* The new candidate is validated (10%)
|
||||||
|
* The candidate db is copied to running (29%)
|
||||||
|
|
||||||
## 5. Discussion
|
## 5. Discussion
|
||||||
|
|
||||||
|
|
@ -186,19 +193,18 @@ performance CPUs, such as 100K entries on a x86_64 in the results, but
|
||||||
it also means that very large lists may not be supported, and that the
|
it also means that very large lists may not be supported, and that the
|
||||||
system degrades with the size of the lists.
|
system degrades with the size of the lists.
|
||||||
|
|
||||||
Examining the profiling of the most demanding Restconf PUT case
|
Examining the profiling of the most demanding Restconf PUT case, most
|
||||||
|
cycles are spent on handling writing and copying the existing datastore.
|
||||||
|
|
||||||
Concluding, the
|
Concluding, the
|
||||||
|
|
||||||
## 6. Future work
|
## 6. Future work
|
||||||
|
|
||||||
It is recommended that the following items should be studied:
|
* Improve access of single list elements to sub-linear performance.
|
||||||
* Try to improve the access of single list elements, to sub-linear perforamnce.
|
|
||||||
* CLI access on large lists (not included in this study)
|
* CLI access on large lists (not included in this study)
|
||||||
|
|
||||||
## 7. References
|
## 7. References
|
||||||
|
|
||||||
[RFC6241](https://tools.ietf.org/html/rfc6241) "Network Configuration Protocol (NETCONF)"
|
* [RFC6241](https://tools.ietf.org/html/rfc6241) "Network Configuration Protocol (NETCONF)"
|
||||||
[RFC8040](https://tools.ietf.org/html/rfc8040) "RESTCONF Protocol"
|
* [RFC8040](https://tools.ietf.org/html/rfc8040) "RESTCONF Protocol"
|
||||||
[i686](https://ark.intel.com/content/www/us/en/ark/products/27235/intel-core-duo-processor-t2400-2m-cache-1-83-ghz-667-mhz-fsb.html)
|
* [plot_perf.sh](../../test/plot_perf.sh) Test script
|
||||||
[plot_perf.sh](../test/plot_perf.sh) Test script
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue