pdp-d stability documentation
[policy/parent.git] / docs / development / devtools / drools-s3p.rst
1 .. This work is licensed under a
2 .. Creative Commons Attribution 4.0 International License.
3 .. http://creativecommons.org/licenses/by/4.0
4
5 .. _drools-s3p-label:
6
7 .. toctree::
8    :maxdepth: 2
9
10 Policy Drools PDP component
11 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
13 Both the Performance and the Stability tests were executed against a default ONAP installation in the PFPP tenant, from an independent VM running the jmeter tool to inject the load.
14
15 General Setup
16 *************
17
18 The kubernetes installation allocated all policy components in the same worker node VM and some additional ones.   The worker VM hosting the policy components has the
19 following spec:
20
21 - 16GB RAM 
22 - 8 VCPU
23 - 160GB Ephemeral Disk
24
25 The standalone VM designated to run jmeter has the same configuration and was only
26 used to run this tool allocating 12G of heap memory to the jmeter tool.
27
28 Other ONAP components used during the estability tests are:
29
30 - Policy XACML PDP to process guard queries for each transaction.
31 - DMaaP to carry PDP-D and jmeter initiated traffic to complete transactions.
32 - Policy API to create (and delete at the end of the tests) policies for each
33   scenario under test.
34 - Policy PAP to deploy (and undeploy at the end of the tests) policies for each scenario under test.
35
36 The following components are simulated during the tests.
37
38 - SO actor for the vDNS use case.
39 - APPC responses for the vCPE and vFW use cases.
40 - AAI to answer queries for the usecases under test.
41
42 In order to restrict APPC responses to just the jmeter too driving all transactions,
43 the APPC component was disabled.
44
45 SO, and AAI actors were simulated internally within the PDP-D by enabling the
46 feature-controlloop-utils previous to run the tests.
47
48 PDP-D Setup
49 ***********
50
51 The kubernetes charts were modified previous to the installation with
52 the changes below.
53
54 The oom/kubernetes/policy/charts/drools/resources/configmaps/base.conf was
55 modified:
56
57 .. code-block:: bash
58
59     --- a/kubernetes/policy/charts/drools/resources/configmaps/base.conf
60     +++ b/kubernetes/policy/charts/drools/resources/configmaps/base.conf
61     @@ -85,27 +85,27 @@ DMAAP_SERVERS=message-router
62
63     # AAI
64
65     -AAI_HOST=aai.{{.Release.Namespace}}
66     -AAI_PORT=8443
67     +AAI_HOST=localhost
68     +AAI_PORT=6666
69     AAI_CONTEXT_URI=
70
71     # MSO
72
73     -SO_HOST=so.{{.Release.Namespace}}
74     -SO_PORT=8080
75     -SO_CONTEXT_URI=onap/so/infra/
76     -SO_URL=https://so.{{.Release.Namespace}}:8080/onap/so/infra
77     +SO_HOST=localhost
78     +SO_PORT=6667
79     +SO_CONTEXT_URI=
80     +SO_URL=https://localhost:6667/
81
82     # VFC
83
84     -VFC_HOST=
85     -VFC_PORT=
86     +VFC_HOST=localhost
87     +VFC_PORT=6668
88     VFC_CONTEXT_URI=api/nslcm/v1/
89
90     # SDNC
91
92     -SDNC_HOST=sdnc.{{.Release.Namespace}}
93     -SDNC_PORT=8282
94     +SDNC_HOST=localhost
95     +SDNC_PORT=6670
96     SDNC_CONTEXT_URI=restconf/operations/
97
98 The AAI actor had to be modified to disable https to talk to the AAI simulator.
99
100 .. code-block:: bash
101
102     ~/oom/kubernetes/policy/charts/drools/resources/configmaps/AAI-http-client.properties
103
104     http.client.services=AAI
105
106     http.client.services.AAI.managed=true
107     http.client.services.AAI.https=false
108     http.client.services.AAI.host=${envd:AAI_HOST}
109     http.client.services.AAI.port=${envd:AAI_PORT}
110     http.client.services.AAI.userName=${envd:AAI_USERNAME}
111     http.client.services.AAI.password=${envd:AAI_PASSWORD}
112     http.client.services.AAI.contextUriPath=${envd:AAI_CONTEXT_URI}
113
114 The SO actor had to be modified similarly.
115
116 .. code-block:: bash
117
118     oom/kubernetes/policy/charts/drools/resources/configmaps/SO-http-client.properties:
119
120     http.client.services=SO
121
122     http.client.services.SO.managed=true
123     http.client.services.SO.https=false
124     http.client.services.SO.host=${envd:SO_HOST}
125     http.client.services.SO.port=${envd:SO_PORT}
126     http.client.services.SO.userName=${envd:SO_USERNAME}
127     http.client.services.SO.password=${envd:SO_PASSWORD}
128     http.client.services.SO.contextUriPath=${envd:SO_CONTEXT_URI}
129
130 The feature-controlloop-utils was started by adding the following script:
131
132 .. code-block:: bash
133
134     oom/kubernetes/policy/charts/drools/resources/configmaps/features.pre.sh:
135
136     #!/bin/bash
137     bash -c "features enable controlloop-utils"
138
139 The PDP-D uses a small configuration:
140
141
142 Stability Test of Policy PDP-D
143 ******************************
144
145 The 72 hour stability test happened in parallel with the estability run of the API component.
146
147 .. code-block:: bash
148
149   small:
150     limits:
151       cpu: 1
152       memory: 4Gi
153     requests:
154       cpu: 100m
155       memory: 1Gi
156
157 Approximately 3.75G heap was allocated to the PDP-D JVM at initialization.
158
159 Worker Node performance
160 =======================
161
162 The VM named onap-k8s-07 was monitored for the duration of the two parallel
163 stability runs.  The table below show the usage ranges:
164
165 .. code-block:: bash
166
167     NAME          CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
168     onap-k8s-07   <=1374m      <=20%  <=10643Mi       <=66%
169
170 PDP-D performance
171 =================
172
173 The PDP-D was monitored during the run an stayed below the following ranges:
174
175 .. code-block:: bash
176
177     NAME           CPU(cores)   MEMORY(bytes)
178     dev-drools-0   <=142m         684Mi
179
180 Garbagge collection was monitored without detecting any major spike.
181
182 The following use cases were tested:
183
184 - vCPE
185 - vDNS
186 - vFirewall
187
188 For 72 hours the following 5 scenarios were run in parallel:
189
190 - vCPE success scenario
191 - vCPE failure scenario (failure returned by simulated APPC recipient through DMaaP).
192 - vDNS success scenario.
193 - vDNS failure scenario.
194 - vFirewall success scenario.
195
196 Five threads, one for each scenario described above, push the traffic back to back
197 with no pauses.
198
199 All transactions completed successfully as expected in each scenario.
200
201 The command executed was
202
203 .. code-block:: bash
204
205     jmeter -n -t /home/ubuntu/jhh/s3p.jmx > /dev/null 2>&1
206
207 The results were computed by taking the ellapsed time from the audit.log
208 (this log reports all end to end transactions, marking the start, end, and
209 ellapsed times).
210
211 The count reflects the number of successful transactions as expected in the
212 use case, as well as the average, standard deviation, and max/min.   An histogram
213 of the response times have been added as a visual indication on the most common transaction times.
214
215 vCPE Success scenario
216 =====================
217
218 ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e:
219
220 .. code-block:: bash
221
222     count    155246.000000
223     mean        269.894226
224     std          64.556282
225     min         133.000000
226     50%         276.000000
227     max        1125.000000
228
229
230 Transaction Times histogram:
231
232 .. image:: images/ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e.png
233
234
235 vCPE Failure scenario
236 =====================
237
238 ControlLoop-vCPE-Fail:
239
240 .. code-block:: bash
241
242     ControlLoop-vCPE-Fail :
243     count    149621.000000
244     mean        280.483522
245     std          67.226550
246     min         134.000000
247     50%         279.000000
248     max        5394.000000
249
250
251 Transaction Times histogram:
252
253 .. image:: images/ControlLoop-vCPE-Fail.png
254
255 vDNS Success scenario
256 =====================
257
258 ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3:
259
260 .. code-block:: bash
261
262     count    293000.000000
263     mean         21.961792
264     std           7.921396
265     min          15.000000
266     50%          20.000000
267     max         672.000000
268
269 Transaction Times histogram:
270
271 .. image:: images/ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3.png
272
273 vDNS Failure scenario
274 =====================
275
276 ControlLoop-vDNS-Fail:
277
278 .. code-block:: bash
279
280     count    59357.000000
281     mean      3010.261267
282     std         76.599948
283     min          0.000000
284     50%       3010.000000
285     max       3602.000000
286
287 Transaction Times histogram:
288
289 .. image:: images/ControlLoop-vDNS-Fail.png
290
291 vFirewall Failure scenario
292 ==========================
293
294 ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a:
295
296 .. code-block:: bash
297
298     count    175401.000000
299     mean        184.581251
300     std          35.619075
301     min         136.000000
302     50%         181.000000
303     max        3972.000000
304
305 Transaction Times histogram:
306
307 .. image:: images/ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a.png
308
309
310
311