-
Notifications
You must be signed in to change notification settings - Fork 33
Add Cloud PDP benchmarks documentation #624
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,120 @@ | ||
| --- | ||
| sidebar_position: 3 | ||
| title: Cloud PDP Benchmarks | ||
| --- | ||
|
|
||
| # Cloud PDP Benchmarks | ||
|
|
||
| This page presents performance benchmarks for the **Cloud PDP**, measured across different policy models, concurrency levels, and relationship depths. | ||
|
|
||
| All tests were run against a production Cloud PDP endpoint over a **10-minute window** per scenario. Latencies are round-trip times (request → response) over HTTPS. | ||
|
|
||
|
Comment on lines
+10
to
+11
|
||
| ## RBAC | ||
|
|
||
| ### Single Concurrency | ||
|
|
||
| | Metric | Avg | Min | Max | | ||
| | --- | --- | --- | --- | | ||
| | Throughput | 5.80 req/s | 5.60 req/s | 6.00 req/s | | ||
| | Average latency | 8.17 ms | 7.12 ms | 9.80 ms | | ||
| | Min latency | 6.24 ms | 5.90 ms | 6.65 ms | | ||
| | Max latency | 34.12 ms | 7.96 ms | 89.57 ms | | ||
| | P50 | 7.24 ms | 7.11 ms | 7.45 ms | | ||
| | P75 | 7.61 ms | 7.34 ms | 7.93 ms | | ||
| | P90 | 8.50 ms | 7.57 ms | 13.64 ms | | ||
| | P95 | 11.35 ms | 7.81 ms | 23.47 ms | | ||
| | P99 | 20.14 ms | 7.93 ms | 50.17 ms | | ||
|
|
||
| ### 10 Concurrent Requests | ||
|
|
||
| | Metric | Avg | Min | Max | | ||
| | --- | --- | --- | --- | | ||
| | Throughput | 56.5 req/s | 54.6 req/s | 57.3 req/s | | ||
| | Average latency | 7.80 ms | 6.23 ms | 14.8 ms | | ||
| | Min latency | 4.82 ms | 4.64 ms | 5.1 ms | | ||
| | Max latency | 53.65 ms | 13.13 ms | 97.0 ms | | ||
| | P50 | 6.43 ms | 6.00 ms | 9.9 ms | | ||
| | P75 | 7.82 ms | 6.58 ms | 19.8 ms | | ||
| | P90 | 10.78 ms | 7.22 ms | 33.0 ms | | ||
| | P95 | 14.16 ms | 7.81 ms | 43.6 ms | | ||
| | P99 | 29.94 ms | 10.00 ms | 56.8 ms | | ||
|
|
||
| ## ReBAC | ||
|
|
||
| ### Depth 1 — Single Concurrency | ||
|
|
||
| *Folder → File* | ||
|
|
||
| | Metric | Avg | Min | Max | | ||
| | --- | --- | --- | --- | | ||
| | Throughput | 5.43 req/s | 5.20 req/s | 5.60 req/s | | ||
| | Average latency | 9.87 ms | 8.90 ms | 12.20 ms | | ||
| | Min latency | 8.04 ms | 7.35 ms | 8.50 ms | | ||
| | Max latency | 28.34 ms | 10.13 ms | 63.80 ms | | ||
| | P50 | 9.05 ms | 8.70 ms | 9.50 ms | | ||
| | P75 | 9.59 ms | 9.12 ms | 12.40 ms | | ||
| | P90 | 10.81 ms | 9.26 ms | 16.90 ms | | ||
| | P95 | 13.32 ms | 9.55 ms | 23.10 ms | | ||
| | P99 | 17.84 ms | 10.00 ms | 45.70 ms | | ||
|
|
||
| ### Depth 1 — 10 Concurrent Requests | ||
|
|
||
| *Folder → File* | ||
|
|
||
| | Metric | Avg | Min | Max | | ||
| | --- | --- | --- | --- | | ||
| | Throughput | 54.7 req/s | 51.7 req/s | 56.2 req/s | | ||
| | Average latency | 11.3 ms | 9.07 ms | 18.2 ms | | ||
| | Min latency | 6.5 ms | 5.90 ms | 7.8 ms | | ||
| | Max latency | 63.9 ms | 21.22 ms | 258.5 ms | | ||
| | P50 | 9.5 ms | 8.57 ms | 14.5 ms | | ||
| | P75 | 11.7 ms | 9.40 ms | 22.8 ms | | ||
| | P90 | 15.9 ms | 10.81 ms | 33.5 ms | | ||
| | P95 | 20.1 ms | 12.05 ms | 43.0 ms | | ||
| | P99 | 40.0 ms | 13.43 ms | 153.2 ms | | ||
|
|
||
| ### Depth 2 — 10 Concurrent Requests | ||
|
|
||
| *Drive → Folder → File* | ||
|
|
||
| | Metric | Avg | Min | Max | | ||
| | --- | --- | --- | --- | | ||
| | Throughput | 54.5 req/s | 51.2 req/s | 56.3 req/s | | ||
| | Average latency | 13.3 ms | 10.8 ms | 21.2 ms | | ||
| | Min latency | 7.2 ms | 6.7 ms | 8.1 ms | | ||
| | Max latency | 71.0 ms | 31.7 ms | 103.0 ms | | ||
| | P50 | 10.9 ms | 10.0 ms | 15.7 ms | | ||
| | P75 | 13.7 ms | 11.2 ms | 25.8 ms | | ||
| | P90 | 19.1 ms | 13.6 ms | 40.4 ms | | ||
| | P95 | 26.1 ms | 15.2 ms | 50.2 ms | | ||
| | P99 | 47.5 ms | 18.6 ms | 68.4 ms | | ||
|
|
||
| ### Depth 3 — 10 Concurrent Requests | ||
|
|
||
| *Drive → Folder → File → Comment* | ||
|
|
||
| | Metric | Avg | Min | Max | | ||
| | --- | --- | --- | --- | | ||
| | Throughput | 53.6 req/s | 48.8 req/s | 55.0 req/s | | ||
| | Average latency | 14.5 ms | 11.8 ms | 20.6 ms | | ||
| | Min latency | 8.0 ms | 7.2 ms | 9.2 ms | | ||
| | Max latency | 71.1 ms | 21.6 ms | 125.8 ms | | ||
| | P50 | 12.0 ms | 10.8 ms | 16.4 ms | | ||
| | P75 | 15.1 ms | 12.2 ms | 25.8 ms | | ||
| | P90 | 20.5 ms | 15.0 ms | 36.8 ms | | ||
| | P95 | 26.7 ms | 16.4 ms | 45.0 ms | | ||
| | P99 | 48.6 ms | 18.9 ms | 73.9 ms | | ||
|
|
||
| ## Key Takeaways | ||
|
|
||
| - **Sub-15 ms average latency** across all policy models at the P50 level, even under concurrent load. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Statistic mislabeled — "average latency" and "P50" are conflated This takeaway reads "Sub-15 ms average latency ... at the P50 level", but average (mean) and P50 (median) are two different statistics. The reader can't tell which one the "Sub-15 ms" claim refers to. Both happen to be true against the tables (P50 Avg ranges 6.43–12.0 ms; Average-latency Avg ranges 7.80–14.5 ms), so pick one and state it cleanly. Suggestion: Reword to a single statistic, e.g. "P50 latency stays under 15 ms across all policy models, even under concurrent load" (or "average latency under 15 ms ..."). (Copilot raised this on this line and it is still unresolved/unaddressed.) |
||
| - **Throughput scales linearly** — 10 concurrent requests yield ~10x throughput with minimal latency increase. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Throughput scales linearly" overclaims from two data points The data has only two concurrency levels (1 and 10), so "scales linearly" is stronger than the measurements support — two points can't establish linearity, and the relationship isn't even exactly 10x (RBAC: 5.80 → 56.5 req/s ≈ 9.7x; ReBAC depth-1: 5.43 → 54.7 ≈ 10.1x). Soften to the observed claim. Suggestion: "Throughput scales near-linearly with concurrency — 10 concurrent requests yield roughly 10x throughput with minimal latency increase." (Copilot raised this on this line and it is still unresolved/unaddressed.) |
||
| - **ReBAC depth has modest impact** — adding relationship depth (1 → 3 hops) increases average latency by only ~3 ms under the same concurrency. | ||
|
|
||
| - **Tail latencies stay low** — P99 remains under 50 ms for most scenarios, suitable for latency-sensitive applications. | ||
|
|
||
| :::note | ||
| These benchmarks reflect network round-trip times over HTTPS to the Cloud PDP. | ||
| Actual latency in your application depends on network proximity, payload size, | ||
| and policy complexity. For the lowest possible latency, | ||
| consider deploying the [Edge PDP](/concepts/pdp/overview#run-an-edge-pdp-with-docker) alongside your application. | ||
| ::: | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark methodology underspecified
For readers to interpret these numbers, the intro should state the measurement conditions: the date/period the run was taken, the Cloud PDP region and the client (load-generator) region/proximity, which endpoint(s) were exercised (e.g.
POST /allow), the request/payload shape, and the policy size (number of roles/resources/relationship tuples). Without these, "5.80 req/s at single concurrency" is hard to reconcile (a single-client closed-loop run is throughput = 1 / latency, which the 8.17 ms avg ≈ 5.8 req/s confirms — worth stating explicitly so it doesn't read as a throughput ceiling).Suggestion: Add a short "Methodology" paragraph under the intro listing date, regions, endpoint, payload, policy size, and load model (closed-loop vs open-loop).
(Copilot raised this on the intro line and it is still unresolved/unaddressed.)