]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
thrashosds: randomly adjust primary_affinity
authorSage Weil <sage@inktank.com>
Sat, 15 Feb 2014 18:05:14 +0000 (10:05 -0800)
committerSage Weil <sage@inktank.com>
Sun, 16 Feb 2014 04:01:51 +0000 (20:01 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
teuthology/task/ceph_manager.py

index ee5fa84f703a9001a0030c0f9198157adb25015c..7f2ce9bfcf82c328916845f8d912d3a1276c069d 100644 (file)
@@ -92,6 +92,18 @@ class Thrasher:
         self.ceph_manager.mark_in_osd(osd)
         self.log("Added osd %s"%(str(osd),))
 
+    def primary_affinity(self, osd=None):
+        if osd is None:
+            osd = random.choice(self.in_osds)
+        if random.random() >= .5:
+            pa = random.random()
+        elif random.random() >= .5:
+            pa = 1
+        else:
+            pa = 0
+        self.log('Setting osd %s primary_affinity to %f' % (str(osd), pa))
+        self.ceph_manager.raw_cluster_cmd('osd', 'primary-affinity', str(osd), str(pa))
+
     def all_up(self):
         while len(self.dead_osds) > 0:
             self.log("reviving osd")
@@ -254,6 +266,7 @@ class Thrasher:
             actions.append((self.in_osd, 1.7,))
         if len(self.dead_osds) > mindead:
             actions.append((self.revive_osd, 1.0,))
+        actions.append((self.primary_affinity, 1.0,))
         actions.append((self.grow_pool, self.config.get('chance_pgnum_grow', 0),))
         actions.append((self.fix_pgp_num, self.config.get('chance_pgpnum_fix', 0),))
         actions.append((self.test_pool_min_size, chance_test_min_size,))
@@ -547,7 +560,8 @@ class CephManager:
         live_osds = [int(x.id_) for x in
                      filter(lambda x: x.running(), self.ctx.daemons.iter_daemons_of_role('osd'))]
         return { 'in' : in_osds, 'out' : out_osds, 'up' : up_osds,
-                 'down' : down_osds, 'dead' : dead_osds, 'live' : live_osds, 'raw' : osd_lines }
+                 'down' : down_osds, 'dead' : dead_osds, 'live' : live_osds,
+                 'raw' : osd_lines}
 
     def get_num_pgs(self):
         status = self.raw_cluster_status()