From: Dan van der Ster Date: Fri, 10 Jan 2020 10:36:20 +0000 (+0100) Subject: mgr/pg_autoscaler: calculate pool_pg_target using pool size X-Git-Tag: v14.2.8~21^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0253205ef36acc6759a3a9687c5eb1b27aa901bf;p=ceph.git mgr/pg_autoscaler: calculate pool_pg_target using pool size Using raw_used_rate to calculate the pool_pg_target results in too many PGs for erasure coded pools (e.g. EC 4+2 has raw_used_rate=1.5 but size is 6, so there will be 4x too many PGs). Calculate using p['size'] instead. Signed-off-by: Dan van der Ster Fixes: https://tracker.ceph.com/issues/43546 (cherry picked from commit b766d5f4086f9b7e2b98a991d979c1865a06051d) --- diff --git a/src/pybind/mgr/pg_autoscaler/module.py b/src/pybind/mgr/pg_autoscaler/module.py index 0868aa2847ef..c3fc1571c033 100644 --- a/src/pybind/mgr/pg_autoscaler/module.py +++ b/src/pybind/mgr/pg_autoscaler/module.py @@ -292,7 +292,7 @@ class PgAutoscaler(MgrModule): final_ratio = max(capacity_ratio, target_ratio) # So what proportion of pg allowance should we be using? - pool_pg_target = (final_ratio * root_map[root_id].pg_target) / raw_used_rate * bias + pool_pg_target = (final_ratio * root_map[root_id].pg_target) / p['size'] * bias final_pg_target = max(p['options'].get('pg_num_min', PG_NUM_MIN), nearest_power_of_two(pool_pg_target))