From 791dd8c302cca70e43e54becc383f6bd5c4a7196 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 25 Mar 2019 06:39:28 -0500 Subject: [PATCH] mgr/pg_autoscaler: apply bias to pg_num selection This is a relatively naive way to apply the bias: we just multiply it to whatever we would have chosen. A more clever approach would be to factor this into the overall cluster-wide PG budget, so that biasing one pool's PGs up would put downward pressure on other pools. That is significantly more complicated, however, and (I think) not worth the effort. Signed-off-by: Sage Weil (cherry picked from commit e7ad0eeaaa3a73b5b78764d86eb634ca7072afd1) --- src/pybind/mgr/pg_autoscaler/module.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pybind/mgr/pg_autoscaler/module.py b/src/pybind/mgr/pg_autoscaler/module.py index 2a1cf978c4afa..2c9c6dbe3231c 100644 --- a/src/pybind/mgr/pg_autoscaler/module.py +++ b/src/pybind/mgr/pg_autoscaler/module.py @@ -268,6 +268,7 @@ def _get_pool_status( raw_used_rate = osdmap.pool_raw_used_rate(pool_id) pool_logical_used = pool_stats[pool_id]['bytes_used'] + bias = p['options'].get('pg_autoscale_bias', 1.0) target_bytes = p['options'].get('target_size_bytes', 0) # What proportion of space are we using? @@ -281,16 +282,17 @@ def _get_pool_status( 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 + pool_pg_target = (final_ratio * root_map[root_id].pg_target) / raw_used_rate * bias final_pg_target = max(p['options'].get('pg_num_min', PG_NUM_MIN), nearest_power_of_two(pool_pg_target)) - self.log.info("Pool '{0}' root_id {1} using {2} of space, " - "pg target {3} quantized to {4} (current {5})".format( + self.log.info("Pool '{0}' root_id {1} using {2} of space, bias {3}, " + "pg target {4} quantized to {5} (current {6})".format( p['pool_name'], root_id, final_ratio, + bias, pool_pg_target, final_pg_target, p['pg_num_target']