Skip to content
Calcrivo

OpenStack Keystone Resource Calculator

Estimate Keystone identity load: users, role assignments, service catalog endpoints and token validations per second.

Inputs

projects
users
roles
services
regions
interfaces

Public, internal and admin interfaces are catalogued separately.

calls
logins
hours

Keystone defaults to one hour for Fernet tokens.

Token Validations per Second

16.00req/s

Total Users

480users

Role Assignment Rows

960assignments

Catalog Endpoints

72endpoints

Tokens Valid at Any Moment

2,880tokens

Keystone Sizing Verdict

Light load — a standard three-worker Keystone deployment is sufficient

Step by step

  1. Values used

    Projects (tenants) = 40 projects; Users per project = 12 users; Role assignments per user = 2 roles; Services in the catalog = 12 services; Regions = 2 regions; Endpoint interfaces per service = 3 interfaces; API calls per user per hour = 120 calls; New token requests per user per hour = 6 logins; Token lifetime = 1 hours

  2. OpenStack Keystone Resource

    validations per second = users × API calls per hour ÷ 3600; live tokens = users × logins per hour × token lifetime; catalog endpoints = services × regions × interfaces.

  3. Token Validations per Second

    = 16.00 req/s

  4. Total Users

    = 480 users

  5. Role Assignment Rows

    = 960 assignments

  6. Catalog Endpoints

    = 72 endpoints

  7. Tokens Valid at Any Moment

    = 2,880 tokens

  8. Keystone Sizing Verdict

    = Light load — a standard three-worker Keystone deployment is sufficient

How it works

Keystone load is driven by validation, not by login: every other OpenStack service revalidates the token on each request, so the busiest path is the read side. Fernet tokens are cryptographically verifiable and therefore not stored in the database, but the service catalog is still embedded in the token response, which is why endpoint count directly inflates every payload. Keystone is on the critical path of every API call in the cloud, so a Keystone that cannot keep up makes Nova, Neutron and Cinder all appear broken at once.

Formula

OpenStack Keystone Resource

validations per second = users × API calls per hour ÷ 3600; live tokens = users × logins per hour × token lifetime; catalog endpoints = services × regions × interfaces.

validations per second
Every authenticated API call revalidates its token with Keystone
live tokens
Concurrently valid tokens, a function of issuance rate and lifetime
catalog endpoints
Rows returned in every token response, so they inflate payload size

Frequently Asked Questions

How is OpenStack Keystone Resource calculated?

validations per second = users × API calls per hour ÷ 3600; live tokens = users × logins per hour × token lifetime; catalog endpoints = services × regions × interfaces. Keystone load is driven by validation, not by login: every other OpenStack service revalidates the token on each request, so the busiest path is the read side. Fernet tokens are cryptographically verifiable and therefore not stored in the database, but the service catalog is still embedded in the token response, which is why endpoint count directly inflates every payload.

Why does OpenStack Keystone Resource matter?

Keystone is on the critical path of every API call in the cloud, so a Keystone that cannot keep up makes Nova, Neutron and Cinder all appear broken at once.

What values do I need to enter?

This calculator takes 9 inputs: Projects (tenants), Users per project, Role assignments per user, Services in the catalog, Regions, Endpoint interfaces per service, API calls per user per hour, New token requests per user per hour, Token lifetime. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

Why does the endpoint count affect performance?

A scoped token response embeds the whole service catalog. With twelve services across two regions and three interfaces that is 72 endpoint entries in every response, which is why large multi-region clouds enable catalog filtering or cut back the interfaces they publish.

You might also need