blob: 7c29a454af776d658be1dc69e0f0b785d4570b8e [file] [log] [blame]
Pamela Dragoshba45dc62020-04-16 09:27:44 -04001.. This work is licensed under a
2.. Creative Commons Attribution 4.0 International License.
3.. http://creativecommons.org/licenses/by/4.0
4
5.. _xacml-s3p-label:
6
7.. toctree::
8 :maxdepth: 2
9
10Policy XACML PDP component
Jim Hahn8f35a812020-05-05 13:08:13 -040011##########################
Pamela Dragoshba45dc62020-04-16 09:27:44 -040012
Jim Hahn8f35a812020-05-05 13:08:13 -040013Both the Performance and the Stability tests were executed by performing requests
14against the Policy RESTful APIs residing on the XACML PDP installed in the windriver
15lab. This was running on a kubernetes pod having the following configuration:
Pamela Dragoshba45dc62020-04-16 09:27:44 -040016
17- 16GB RAM
18- 8 VCPU
19- 160GB Disk
20
Jim Hahn8f35a812020-05-05 13:08:13 -040021Both tests were run via jmeter, which was installed on a separate VM so-as not
22to impact the performance of the XACML-PDP being tested.
Pamela Dragoshba45dc62020-04-16 09:27:44 -040023
Jim Hahn8f35a812020-05-05 13:08:13 -040024Performance Test of Policy XACML PDP
25************************************
Pamela Dragoshba45dc62020-04-16 09:27:44 -040026
Jim Hahn8f35a812020-05-05 13:08:13 -040027Summary
28=======
Pamela Dragoshba45dc62020-04-16 09:27:44 -040029
Jim Hahn8f35a812020-05-05 13:08:13 -040030The Performance test was executed, and the result analyzed, via:
Pamela Dragoshba45dc62020-04-16 09:27:44 -040031
32.. code-block:: bash
33
Jim Hahn8f35a812020-05-05 13:08:13 -040034 jmeter -Jduration=1200 -Jusers=10 \
35 -Jxacml_ip=$ip -Jpap_ip=$ip -Japi_ip=$ip \
36 -Jxacml_port=31104 -Jpap_port=32425 -Japi_port=30709 \
37 -n -t perf.jmx
Pamela Dragoshba45dc62020-04-16 09:27:44 -040038
Jim Hahn8f35a812020-05-05 13:08:13 -040039 ./result.sh
Pamela Dragoshba45dc62020-04-16 09:27:44 -040040
Jim Hahn8f35a812020-05-05 13:08:13 -040041Note: the ports listed above correspond to port 6969 of the respective components.
42
43The performance test, perf.jmx, runs the following, all in parallel:
44
45- Healthcheck, 10 simultaneous threads
46- Statistics, 10 simultaneous threads
47- Decisions, 10 simultaneous threads, each running the following in sequence:
48
49 - Monitoring Decision
50 - Monitoring Decision, abbreviated
51 - Naming Decision
52 - Optimization Decision
53 - Default Guard Decision (always "Permit")
54 - Frequency Limiter Guard Decision
55 - Min/Max Guard Decision
56
57When the script starts up, it uses policy-api to create, and policy-pap to deploy,
58the policies that are needed by the test. It assumes that the "naming" policy has
59already been created and deployed. Once the test completes, it undeploys and deletes
60the policies that it previously created.
61
62Results
63=======
64
65The test was run for 20 minutes at a time, for different numbers of users (i.e.,
66threads), with the following results:
67
68.. csv-table::
69 :header: "Number of Users", "Throughput (requests/second)", "Average Latency (ms)"
70
71 10, 6064, 4.1
72 20, 6495, 7.2
73 40, 6457, 12.2
74 80, 5803, 21.3
75
76
77Stability Test of Policy XACML PDP
78************************************
79
80Summary
81=======
82
83The Stability test was run with the same pods/VMs and uses the same jmeter script as the
84performance test, except that it was run for 72 hours instead of 20 minutes. In
85addition, it was run in the background via "nohup", to prevent it from being interrupted:
86
87.. code-block:: bash
88
89 nohup jmeter -Jduration=259200 \
90 -Jxacml_ip=$ip -Jpap_ip=$ip -Japi_ip=$ip \
91 -Jxacml_port=31104 -Jpap_port=32425 -Japi_port=30709 \
92 -n -t perf.jmx &
93
94The memory and CPU usage can be monitored by running "top" on the xacml pod. By taking
95a snapshot before the test is started, and again when it completes, the total CPU used
96by all of the requests can be computed.
97
98Results
99=======
100
101The final output of the jmeter script is found in the nohup.out file:
102
103.. image:: images/xacml-s3p-jmeter.png
104
105The final memory and CPU from "top":
106
107.. image:: images/xacml-s3p-top.png
108
109The through-put reported by jmeter was 4849 requests/second, with 0 errors. In addition,
110the memory usage observed via "top" indicated that the virtual memory and resident set
111sizes remained virtually unchanged through-out the test.
112
113Unfortunately, the initial CPU usage was not recorded, so the CPU time reported in
114the "top" screen-shot includes XACML-PDP start-up time as well as requests that were
115executed before the stability test was started. Nevertheless, even including that, we find:
116
117.. code-block:: bash
118
119 13,166 CPU minutes * 60sec/min * 1000ms/sec / 1,256,834,239 requests = 0.63ms/request