stability pdp-d review comments
[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.
19 The worker VM hosting the policy components has the 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.  The jmeter JVM
26 was instantiated with a max heap configuration of 12G.
27
28 Other ONAP components used during the stability 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 use cases under test.
41
42 In order to avoid interferences with the APPC component while running the tests,
43 the APPC component was disabled.
44
45 SO, and AAI actors were simulated within the PDP-D JVM by enabling the
46 feature-controlloop-utils before running 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 as follows:
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
140 Stability Test of Policy PDP-D
141 ******************************
142
143 The 72 hour stability test happened in parallel with the stability run of the API component.
144
145 Worker Node performance
146 =======================
147
148 The VM named onap-k8s-07 was monitored for the duration of the two parallel
149 stability runs.  The table below show the usage ranges:
150
151 .. code-block:: bash
152
153     NAME          CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
154     onap-k8s-07   <=1374m      <=20%  <=10643Mi       <=66%
155
156 PDP-D performance
157 =================
158
159 The PDP-D uses a small configuration:
160
161 .. code-block:: bash
162
163   small:
164     limits:
165       cpu: 1
166       memory: 4Gi
167     requests:
168       cpu: 100m
169       memory: 1Gi
170
171 In practicality, this corresponded to an allocated 3.75G heap for the JVM based.
172
173 The PDP-D was monitored during the run and 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 Garbage collection was monitored without detecting any significant degradation.
181
182 The test set focused on the following use cases:
183
184 - vCPE
185 - vDNS
186 - vFirewall
187
188 For 72 hours the following 5 scenarios ran 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 ran in parallel, one for each scenario.   The transactions were initiated
197 by each jmeter thread group.   Each thread initiated a transaction, monitored the transaction, and
198 as soon as the transaction ending was detected, it initiated the next one, so back to back with no
199 pauses.
200
201 All transactions completed successfully as it was expected in each scenario, with no failures.
202
203 The command executed was
204
205 .. code-block:: bash
206
207     jmeter -n -t /home/ubuntu/jhh/s3p.jmx > /dev/null 2>&1
208
209 The results were computed by taking the ellapsed time from the audit.log
210 (this log reports all end to end transactions, marking the start, end, and
211 ellapsed times).
212
213 The count reflects the number of successful transactions as expected in the
214 use case, as well as the average, standard deviation, and max/min.   An histogram
215 of the response times have been added as a visual indication on the most common
216 transaction times.
217
218 vCPE Success scenario
219 =====================
220
221 ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e:
222
223 .. code-block:: bash
224
225     count    155246.000000
226     mean        269.894226
227     std          64.556282
228     min         133.000000
229     50%         276.000000
230     max        1125.000000
231
232
233 .. image:: images/ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e.png
234
235
236 vCPE Failure scenario
237 =====================
238
239 ControlLoop-vCPE-Fail:
240
241 .. code-block:: bash
242
243     ControlLoop-vCPE-Fail :
244     count    149621.000000
245     mean        280.483522
246     std          67.226550
247     min         134.000000
248     50%         279.000000
249     max        5394.000000
250
251
252 .. image:: images/ControlLoop-vCPE-Fail.png
253
254 vDNS Success scenario
255 =====================
256
257 ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3:
258
259 .. code-block:: bash
260
261     count    293000.000000
262     mean         21.961792
263     std           7.921396
264     min          15.000000
265     50%          20.000000
266     max         672.000000
267
268
269 .. image:: images/ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3.png
270
271 vDNS Failure scenario
272 =====================
273
274 ControlLoop-vDNS-Fail:
275
276 .. code-block:: bash
277
278     count    59357.000000
279     mean      3010.261267
280     std         76.599948
281     min          0.000000
282     50%       3010.000000
283     max       3602.000000
284
285
286 .. image:: images/ControlLoop-vDNS-Fail.png
287
288 vFirewall Success scenario
289 ==========================
290
291 ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a:
292
293 .. code-block:: bash
294
295     count    175401.000000
296     mean        184.581251
297     std          35.619075
298     min         136.000000
299     50%         181.000000
300     max        3972.000000
301
302
303 .. image:: images/ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a.png
304
305
306
307