Skip to content

Commit

Permalink
mgr/pg_autoscaler: apply bias to pg_num selection
Browse files Browse the repository at this point in the history
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 <sage@redhat.com>
(cherry picked from commit e7ad0ee)
  • Loading branch information
liewegas committed Apr 4, 2019
1 parent 51090e1 commit 791dd8c
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/pybind/mgr/pg_autoscaler/module.py
Expand Up @@ -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?
Expand All @@ -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']
Expand Down

0 comments on commit 791dd8c

Please sign in to comment.