Skip to main content
RunBook Academy

CephXXI · PG AutoscalePG Autoscale

Reading autoscaler suggestions

Intermediate⏱ ~16 minceph

What you'll learn

  • Read every column of `ceph osd pool autoscale-status`
  • Explain how SIZE, RATE, and RAW CAPACITY produce the recommendation
  • Identify when a recommendation is based on bad inputs
  • Distinguish a real recommendation from a transient one

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

autoscale-status is one of the few Ceph commands that shows you its work. Every number the module used to reach a recommendation is in the table. If you can read it, you can tell in seconds whether a recommendation reflects reality or reflects a pool that was created yesterday and has 40 MB in it.

The table

ceph osd pool autoscale-status
POOL         SIZE  TARGET SIZE  RATE  RAW CAPACITY  RATIO  TARGET RATIO  BIAS  PG_NUM  NEW PG_NUM  AUTOSCALE  BULK
.mgr         1.2M               3.0        437.0T  0.0000                1.0       1              on         false
rbd-vms     18.4T               3.0        437.0T  0.1263                1.0     512         1024  warn       false
ec-archive  61.0T               1.5        437.0T  0.2094                1.0    1024              on         true
ColumnWhat it is
SIZEbytes the pool currently stores (user data)
TARGET SIZEwhat you told the module the pool will grow to
RATEraw bytes consumed per user byte — size for replicated, (k+m)/k for EC
RAW CAPACITYraw capacity of the OSDs this pool’s rule can use
RATIOthis pool’s share of raw capacity: SIZE × RATE / RAW CAPACITY
TARGET RATIOyour declared share, if you set one
BIASa manual multiplier on the computed PG count
PG_NUMcurrent value
NEW PG_NUMwhat the module wants — blank means no change
BULKflag saying “this pool will be large; start it big”

RATE 1.5 on ec-archive above is a k=4, m=2 profile: six raw bytes per four user bytes.

Reading a recommendation

The module targets roughly 100 PGs per OSD across all pools. It divides that budget between pools in proportion to how much of the cluster each one occupies — RATIO, or TARGET RATIO if you declared one — then rounds to a power of two.

So rbd-vms above holds 12.6% of raw capacity and is being told to go from 512 to 1024 PGs. Either the pool grew, OSDs were added, or another pool shrank. The table tells you which, because all three inputs are right there.

When the inputs are wrong

The classic bad recommendation: a brand-new pool.

POOL       SIZE  RATE  RAW CAPACITY  RATIO  PG_NUM  NEW PG_NUM
new-pool   40M   3.0        437.0T  0.0000      32           1

The module sees a pool holding effectively nothing and proposes the minimum. It is arithmetically correct and operationally wrong — you created that pool because you are about to put 30 TB in it. The fix is not to argue with the module; it is to tell it what you know:

ceph osd pool set new-pool target_size_ratio 0.20

Quiz

Knowledge check · 4 questions

  1. Q1. A pool shows `RATE 1.33`. What does this tell you about the pool?

  2. Q2. RAW CAPACITY in autoscale-status is the same value for every pool in a cluster.

  3. Q3. Diagnose the recommendation before acting on it.

    A pool `metrics-hot` you created two days ago for a new Prometheus long-term store shows `SIZE 900M`, `PG_NUM 256`, `NEW PG_NUM 8`, `AUTOSCALE on`. The ingest pipeline goes live next week and is projected to write 25 TB in the first month.

  4. Q4. What is the relationship between the RATIO column and the PG count the module recommends?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Read autoscale-status before and after any change to pool layout, device classes, or OSD count — all three move RAW CAPACITY and therefore every recommendation in the table. Keep a note of pools where you deliberately overrode the module, and why; the next operator will see a pool at 4× the recommended PG count and needs to know it was a decision rather than an accident.

Cross-course references

  • Kubernetes: a StorageClass pointing at a new Ceph pool should have target_size_ratio set before the first PVC lands
  • Linux: reading a table of derived values back to its inputs is the same skill as reading vmstat fields