Results of Xacml Performance tests
[policy/parent.git] / docs / development / devtools / xacml-s3p.rst
index 7c29a45..1411f90 100644 (file)
@@ -7,22 +7,20 @@
 .. toctree::
    :maxdepth: 2
 
-Policy XACML PDP component
 ##########################
 
-Both the Performance and the Stability tests were executed by performing requests
-against the Policy RESTful APIs residing on the XACML PDP installed in the windriver
-lab.  This was running on a kubernetes pod having the following configuration:
+Performance Test of Policy XACML PDP
+************************************
+
+The Performance test was executed by performing requests
+against the Policy RESTful APIs residing on the XACML PDP installed on a Cloud based Virtual Machine.
 
+VM Configuration:
 - 16GB RAM
 - 8 VCPU
-- 160GB Disk
-
-Both tests were run via jmeter, which was installed on a separate VM so-as not
-to impact the performance of the XACML-PDP being tested.
+- 1TB Disk
 
-Performance Test of Policy XACML PDP
-************************************
+ONAP was deployed using a K8s Configuration on a separate VM.
 
 Summary
 =======
@@ -34,9 +32,7 @@ The Performance test was executed, and the result analyzed, via:
     jmeter -Jduration=1200 -Jusers=10 \
         -Jxacml_ip=$ip -Jpap_ip=$ip -Japi_ip=$ip \
         -Jxacml_port=31104 -Jpap_port=32425 -Japi_port=30709 \
-        -n -t perf.jmx
-
-    ./result.sh
+        -n -t perf.jmx -l testresults.jtl
 
 Note: the ports listed above correspond to port 6969 of the respective components.
 
@@ -68,52 +64,76 @@ threads), with the following results:
 .. csv-table::
    :header: "Number of Users", "Throughput (requests/second)", "Average Latency (ms)"
 
-   10, 6064, 4.1
-   20, 6495, 7.2
-   40, 6457, 12.2
-   80, 5803, 21.3
+   10, 8929, 3.10
+   20, 10827, 5.05
+   40, 11800, 9.35
+   80, 11750, 18.62
 
 
 Stability Test of Policy XACML PDP
 ************************************
 
+The stability test was executed by performing requests
+against the Policy RESTful APIs residing on the XACML PDP installed in the windriver
+lab.  This was running on a kubernetes pod having the following configuration:
+
+- 16GB RAM
+- 8 VCPU
+- 160GB Disk
+
+The test was run via jmeter, which was installed on a separate VM so-as not
+to impact the performance of the XACML-PDP being tested.
+
 Summary
 =======
 
-The Stability test was run with the same pods/VMs and uses the same jmeter script as the
-performance test, except that it was run for 72 hours instead of 20 minutes.  In
-addition, it was run in the background via "nohup", to prevent it from being interrupted:
+The stability test was performed on a default ONAP OOM installation in the Intel Wind River Lab environment.
+JMeter was installed on a separate VM to inject the traffic defined in the
+`XACML PDP stability script
+<https://git.onap.org/policy/xacml-pdp/tree/testsuites/stability/src/main/resources/testplans/stability.jmx>`_
+with the following command:
 
 .. code-block:: bash
 
-    nohup jmeter -Jduration=259200 \
-        -Jxacml_ip=$ip -Jpap_ip=$ip -Japi_ip=$ip \
-        -Jxacml_port=31104 -Jpap_port=32425 -Japi_port=30709 \
-        -n -t perf.jmx &
-
-The memory and CPU usage can be monitored by running "top" on the xacml pod.  By taking
-a snapshot before the test is started, and again when it completes, the total CPU used
-by all of the requests can be computed.
+    jmeter.sh -Jduration=259200 -Jusers=2 -Jxacml_ip=$ip -Jpap_ip=$ip -Japi_ip=$ip \
+        -Jxacml_port=31104 -Jpap_port=32425 -Japi_port=30709 --nongui --testfile stability.jmx
 
-Results
-=======
+Note: the ports listed above correspond to port 6969 of the respective components.
 
-The final output of the jmeter script is found in the nohup.out file:
+The default log level of the root and org.eclipse.jetty.server.RequestLog loggers in the logback.xml
+of the XACML PDP
+(om/kubernetes/policy/components/policy-xacml-pdp/resources/config/logback.xml)
+was set to ERROR since the OOM installation did not have log rotation enabled of the
+container logs in the kubernetes worker nodes.
 
-.. image:: images/xacml-s3p-jmeter.png
+The stability test, stability.jmx, runs the following, all in parallel:
 
-The final memory and CPU from "top":
+- Healthcheck, 2 simultaneous threads
+- Statistics, 2 simultaneous threads
+- Decisions, 2 simultaneous threads, each running the following tasks in sequence:
+   - Monitoring Decision
+   - Monitoring Decision, abbreviated
+   - Naming Decision
+   - Optimization Decision
+   - Default Guard Decision (always "Permit")
+   - Frequency Limiter Guard Decision
+   - Min/Max Guard Decision
 
-.. image:: images/xacml-s3p-top.png
+When the script starts up, it uses policy-api to create, and policy-pap to deploy
+the policies that are needed by the test.  It assumes that the "naming" policy has
+already been created and deployed.  Once the test completes, it undeploys and deletes
+the policies that it previously created.
 
-The through-put reported by jmeter was 4849 requests/second, with 0 errors.  In addition,
-the memory usage observed via "top" indicated that the virtual memory and resident set
-sizes remained virtually unchanged through-out the test.
+Results
+=======
 
-Unfortunately, the initial CPU usage was not recorded, so the CPU time reported in
-the "top" screen-shot includes XACML-PDP start-up time as well as requests that were
-executed before the stability test was started.  Nevertheless, even including that, we find:
+The stability summary results were reported by JMeter with the following summary line:
 
 .. code-block:: bash
 
-    13,166 CPU minutes * 60sec/min * 1000ms/sec / 1,256,834,239 requests = 0.63ms/request
+    summary =  207771010 in 72:00:01 =  801.6/s Avg:     6 Min:     0 Max:   411 Err:     0 (0.00%)
+
+The XACML PDP offered good performance with JMeter for the traffic mix described above, using 801 threads per second
+to inject the traffic load.   No errors were encountered, and no significant CPU spikes were noted.
+The average transaction time was 6ms. with a maximum of 411ms.
+