]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/balancer: less verbose on 'eval' by default; add 'eval-verbose'
authorSage Weil <sage@redhat.com>
Thu, 26 Oct 2017 03:47:02 +0000 (22:47 -0500)
committerSage Weil <sage@redhat.com>
Wed, 1 Nov 2017 12:28:49 +0000 (07:28 -0500)
The verbose output is helpful for debugging and understanding what is
being measured, but most of the time all that you care about is the score.

Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/balancer/module.py

index 155f9b73e21e056cf4518c0400b91746e67fef43..2e46eccd6eebee7c5812cfe425fff9d2867fa0f3 100644 (file)
@@ -119,18 +119,21 @@ class Eval:
     def __init__(self, ms):
         self.ms = ms
 
-    def show(self):
-        r = self.ms.desc + '\n'
-        r += 'target_by_root %s\n' % self.target_by_root
-        r += 'actual_by_pool %s\n' % self.actual_by_pool
-        r += 'actual_by_root %s\n' % self.actual_by_root
-        r += 'count_by_pool %s\n' % self.count_by_pool
-        r += 'count_by_root %s\n' % self.count_by_root
-        r += 'total_by_pool %s\n' % self.total_by_pool
-        r += 'total_by_root %s\n' % self.total_by_root
-        r += 'stats_by_root %s\n' % self.stats_by_root
-        r += 'score_by_pool %s\n' % self.score_by_pool
-        r += 'score_by_root %s\n' % self.score_by_root
+    def show(self, verbose=False):
+        if verbose:
+            r = self.ms.desc + '\n'
+            r += 'target_by_root %s\n' % self.target_by_root
+            r += 'actual_by_pool %s\n' % self.actual_by_pool
+            r += 'actual_by_root %s\n' % self.actual_by_root
+            r += 'count_by_pool %s\n' % self.count_by_pool
+            r += 'count_by_root %s\n' % self.count_by_root
+            r += 'total_by_pool %s\n' % self.total_by_pool
+            r += 'total_by_root %s\n' % self.total_by_root
+            r += 'stats_by_root %s\n' % self.stats_by_root
+            r += 'score_by_pool %s\n' % self.score_by_pool
+            r += 'score_by_root %s\n' % self.score_by_root
+        else:
+            r = self.ms.desc + ' '
         r += 'score %f (lower is better)\n' % self.score
         return r
 
@@ -213,6 +216,11 @@ class Module(MgrModule):
             "desc": "Evaluate data distribution for the current cluster or specific plan",
             "perm": "r",
         },
+        {
+            "cmd": "balancer eval-verbose name=plan,type=CephString,req=false",
+            "desc": "Evaluate data distribution for the current cluster or specific plan (verbosely)",
+            "perm": "r",
+        },
         {
             "cmd": "balancer optimize name=plan,type=CephString",
             "desc": "Run optimizer to create a new plan",
@@ -277,7 +285,8 @@ class Module(MgrModule):
                 self.active = False
             self.event.set()
             return (0, '', '')
-        elif command['prefix'] == 'balancer eval':
+        elif command['prefix'] == 'balancer eval' or command['prefix'] == 'balancer eval-verbose':
+            verbose = command['prefix'] == 'balancer eval-verbose'
             if 'plan' in command:
                 plan = self.plans.get(command['plan'])
                 if not plan:
@@ -288,7 +297,7 @@ class Module(MgrModule):
                 ms = MappingState(self.get_osdmap(),
                                   self.get("pg_dump"),
                                   'current cluster')
-            return (0, self.evaluate(ms), '')
+            return (0, self.evaluate(ms, verbose=verbose), '')
         elif command['prefix'] == 'balancer optimize':
             plan = self.plan_create(command['plan'])
             self.optimize(plan)
@@ -552,9 +561,9 @@ class Module(MgrModule):
         pe.score /= 3 * len(roots)
         return pe
 
-    def evaluate(self, ms):
+    def evaluate(self, ms, verbose=False):
         pe = self.calc_eval(ms)
-        return pe.show()
+        return pe.show(verbose=verbose)
 
     def optimize(self, plan):
         self.log.info('Optimize plan %s' % plan.name)