Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 120 additions & 0 deletions docs/concepts/pdp/cloud-pdp-benchmarks.mdx
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.
Copy link
Copy Markdown
Contributor

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.)


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.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The 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.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The 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.
:::
1 change: 1 addition & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,7 @@ const sidebars = {
items: [
"concepts/pdp/configuration",
"concepts/pdp/cloud-pdp-capabilities",
"concepts/pdp/cloud-pdp-benchmarks",
"how-to/manage-data/local-facts-uploader",
],
},
Expand Down