Skip to content

Commit cedf461

Browse files
authored
Merge pull request FRINXio#217 from FRINXio/gnmi_perf
Add GNMI performance results
2 parents ff1dca3 + d3eecd5 commit cedf461

1 file changed

Lines changed: 118 additions & 0 deletions

File tree

frinx-uniconfig/user-guide/performance-and-scale/performance_characteristics.md

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,3 +259,121 @@ Update rate:
259259
> After update each device has config of 1.2k json lines each
260260
261261
20 threads were used. No delay among successive updating RPCs
262+
263+
264+
## GNMI devices
265+
266+
We use gnmi-testtool to simulate devices.
267+
268+
Important caveats:
269+
- Measurement were performed on simulated devices = no device overhead
270+
- Measured on Uniconfig version 5.2.5
271+
- Simulated devices were with small configuration (~ 1144 json lines)
272+
- Devices were installed using optimized RPC connection-manager:install-multiple-nodes (up to 250 devices)
273+
274+
Tests:
275+
- A. Single node deployment of Uniconfig resources: CPU 12 cores and RAM 4 GB
276+
277+
### Device installation & synchronization
278+
```
279+
{
280+
"input": {
281+
"nodes": [
282+
{
283+
'node-id': 'node-36100',
284+
'gnmi': {
285+
'schema-cache-directory': 'gnmi-topology-testtool',
286+
'update-paths': [
287+
'.+'
288+
],
289+
'uniconfig-config:whitelist': {
290+
'path': [
291+
'openconfig-interfaces:interfaces',
292+
'openconfig-system:system',
293+
'openconfig-openflow:openflow'
294+
]
295+
},
296+
'uniconfig-config:uniconfig-native-enabled': True,
297+
'uniconfig-config:install-uniconfig-node-enabled': True,
298+
'uniconfig-config:sequence-read-active': True,
299+
'connection-parameters': {
300+
'host': '10.19.0.253',
301+
'port': '36100',
302+
'connection-type': 'PLAINTEXT',
303+
'credentials': {
304+
'username': 'admin',
305+
'password': 'password'
306+
}
307+
},
308+
'session-timers': {
309+
'request-timeout': 100,
310+
'internal-transaction-timeout': 100
311+
},
312+
'extensions-parameters': {
313+
'gnmi-parameters': {
314+
'use-model-name-prefix': False
315+
},
316+
'force-cached-capabilities': [
317+
'null'
318+
]
319+
},
320+
'stream': [
321+
{
322+
'stream-name': 'GNMI_testtool',
323+
'paths': [
324+
'openconfig-system:system/config',
325+
'openconfig-system:system/aaa',
326+
'openconfig-interfaces:interfaces/interface',
327+
'openconfig-lldp:lldp'
328+
]
329+
}
330+
]
331+
}
332+
}
333+
]
334+
}
335+
}
336+
```
337+
338+
### Test A - one node Uniconfig
339+
340+
Inputs:
341+
6000 x GNMI devices simulated:
342+
1144 json lines
343+
344+
Evaluation 1:
345+
6000 devices were registered in 5.2 minutes on single node Uniconfig using 12 cores
346+
Average one device instalation duration = 5.2 minutes / 6000 devices ~ 0.00087 minutes
347+
Average number of json lines per device = 1144 lines
348+
lines of json / per core / per minute = 1144 lines / 12 cores / 0.00087 minutes = 109578
349+
350+
Installation & sync rate:
351+
352+
**109,578** *lines of json / per core / per minute*
353+
354+
> A single uniconfig node is capable of installing (and fully syncing)
355+
> **6000 GNMI devices with config of 1.1k lines each of formatted json (in Uniconfig)**
356+
> in **5.2 minutes** using **12 CPU cores**
357+
358+
RPC were sent serially - *connection-manager:install-multiple-nodes* RPC was used (with 100 devices each).
359+
360+
361+
Evaluation 2:
362+
Devices were PATCHED - after PATCH they contain 10 more interfaces - which is 1234 json lines.
363+
Then 6000 devices were updated in 4.3 minutes on single node Uniconfig using 12 cores.
364+
Update process consisted of RPCs: sync-from-network
365+
After sync-from-network each configuration was increased from 1144 to 1234 json lines
366+
Average one device update duration = 4.3 minutes / 6000 devices = 0,00072 minutes
367+
Average number of json lines per device = 1234 lines
368+
lines of json / per core / per minute = 1234 lines / 12 cores / 0,00072 minutes = 142824
369+
370+
Update rate:
371+
372+
**142,824** *lines of json / per core / per minute*
373+
374+
> A single uniconfig node is capable of updating (and fully syncing)
375+
> **6000 GNMI devices with config of 1.1k json lines each (of formatted json in Uniconfig)**
376+
> in **4.3 minutes** using **12 CPU cores**
377+
> After update each device has config of 1.2k json lines each
378+
379+
10 threads were used. No delay among successive updating RPCs. RPC sync-from-network with 60 devices each RPC.

0 commit comments

Comments
 (0)