Pamela Dragosh | ba45dc6 | 2020-04-16 09:27:44 -0400 | [diff] [blame] | 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 | |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 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: |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 20 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 21 | - 16GB RAM |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 22 | - 8 VCPU |
| 23 | - 160GB Ephemeral Disk |
| 24 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 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. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 27 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 28 | Other ONAP components used during the stability tests are: |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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. |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 40 | - AAI to answer queries for the use cases under test. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 41 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 42 | In order to avoid interferences with the APPC component while running the tests, |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 43 | the APPC component was disabled. |
| 44 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 45 | SO, and AAI actors were simulated within the PDP-D JVM by enabling the |
| 46 | feature-controlloop-utils before running the tests. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 55 | modified as follows: |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 139 | |
| 140 | Stability Test of Policy PDP-D |
| 141 | ****************************** |
| 142 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 143 | The 72 hour stability test happened in parallel with the stability run of the API component. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 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: |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 174 | |
| 175 | .. code-block:: bash |
| 176 | |
| 177 | NAME CPU(cores) MEMORY(bytes) |
| 178 | dev-drools-0 <=142m 684Mi |
| 179 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 180 | Garbage collection was monitored without detecting any significant degradation. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 181 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 182 | The test set focused on the following use cases: |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 183 | |
| 184 | - vCPE |
| 185 | - vDNS |
| 186 | - vFirewall |
| 187 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 188 | For 72 hours the following 5 scenarios ran in parallel: |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 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. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 200 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 201 | All transactions completed successfully as it was expected in each scenario, with no failures. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 215 | of the response times have been added as a visual indication on the most common |
| 216 | transaction times. |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 285 | |
| 286 | .. image:: images/ControlLoop-vDNS-Fail.png |
| 287 | |
jhh | 2e1562f | 2020-05-19 14:37:51 -0500 | [diff] [blame^] | 288 | vFirewall Success scenario |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 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 | |
jhh | 794fa0b | 2020-05-18 23:23:58 -0500 | [diff] [blame] | 302 | |
| 303 | .. image:: images/ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a.png |
| 304 | |
| 305 | |
| 306 | |
| 307 | |