Optimization with a Large number of OSDsΒΆ
You may need to optimize your Ceph configuration for balanced operation across deployments with a high number of OSDs.
About this task
As the number of OSDs increases, choosing the correct <pg_num> and <pgp_num> values becomes more important as they have a significant influence on the behavior of the cluster and the durability of the data should a catastrophic event occur.
StarlingX recommends the following values:
Fewer than 5 OSDs: Set <pg_num> and <pgp_num> to 128.
Between 5 and 10 OSDs: Set <pg_num> and <pgp_num> to 512.
Between 10 and 50 OSDs: Set <pg_num> and <pgp_num> to 4096.
More than 50 OSDs: Understanding the memory, CPU and network usage tradeoffs, calculate and set the optimal <pg_num> and <pgp_num> values for your scenario.
Use the equation below and round up to a number power of 2.
Total PGs = (OSDs * 100) / <pool_size>
<pool_size> is either the number of replicas for replicated pools or the K+M sum for erasure coded pools as returned by
ceph osd erasure-code-profile get <profile>
, where <profile> is usually default.For more information on the tradeoffs involved, consult the Ceph documentation at:
https://docs.ceph.com/en/latest/rados/operations/placement-groups/
Example
For a deployment with 7 OSDs, use the following commands to set <pg> and <pgp_num> to 512.
$ ceph osd pool set kube-rbd pg_num 512 $ ceph osd pool set kube-rbd pgp_num 512