]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crush/CrushWrapper: set chooseleaf_tries to 5 for 'simple' indep rules
authorSage Weil <sage@inktank.com>
Tue, 3 Dec 2013 16:49:15 +0000 (08:49 -0800)
committerSage Weil <sage@inktank.com>
Fri, 6 Dec 2013 22:24:02 +0000 (14:24 -0800)
When making a generic indep rule, set the recursive retry to 5.  This gives
better overall results.

Signed-off-by: Sage Weil <sage@inktank.com>
src/crush/CrushWrapper.cc

index 923e8c457d73be9081db13a8f86e96c441a73f0f..edd2b3bb606695073ca1fa9dc75b0115869083fa 100644 (file)
@@ -686,22 +686,28 @@ int CrushWrapper::add_simple_rule(string name, string root_name,
     }
   }
 
-  crush_rule *rule = crush_make_rule(3, ruleset, 1 /* pg_pool_t::TYPE_REP */, 1, 10);
+  int steps = 3;
+  if (mode == "indep")
+    steps = 4;
+  crush_rule *rule = crush_make_rule(steps, ruleset, 1 /* pg_pool_t::TYPE_REP */, 1, 10);
   assert(rule);
-  crush_rule_set_step(rule, 0, CRUSH_RULE_TAKE, root, 0);
+  int step = 0;
+  if (mode == "indep")
+    crush_rule_set_step(rule, step++, CRUSH_RULE_SET_CHOOSE_LEAF_TRIES, 5, 0);
+  crush_rule_set_step(rule, step++, CRUSH_RULE_TAKE, root, 0);
   if (type)
-    crush_rule_set_step(rule, 1,
+    crush_rule_set_step(rule, step++,
                        mode == "firstn" ? CRUSH_RULE_CHOOSE_LEAF_FIRSTN :
                        CRUSH_RULE_CHOOSE_LEAF_INDEP,
                        CRUSH_CHOOSE_N,
                        type);
   else
-    crush_rule_set_step(rule, 1,
+    crush_rule_set_step(rule, step++,
                        mode == "firstn" ? CRUSH_RULE_CHOOSE_FIRSTN :
                        CRUSH_RULE_CHOOSE_INDEP,
                        CRUSH_CHOOSE_N,
                        0);
-  crush_rule_set_step(rule, 2, CRUSH_RULE_EMIT, 0, 0);
+  crush_rule_set_step(rule, step++, CRUSH_RULE_EMIT, 0, 0);
   int rno = crush_add_rule(crush, rule, -1);
   set_rule_name(rno, name);
   have_rmaps = false;