]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rados,thrash-erasure-code: add overwrites workloads
authorSamuel Just <sjust@redhat.com>
Tue, 25 Oct 2016 16:55:46 +0000 (09:55 -0700)
committerSamuel Just <sjust@redhat.com>
Wed, 16 Nov 2016 00:00:21 +0000 (16:00 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
suites/rados/thrash-erasure-code/workloads/ec-pool-snaps-few-objects-overwrites.yaml [new file with mode: 0644]
suites/rados/thrash-erasure-code/workloads/ec-small-objects-fast-read-overwrites.yaml [new file with mode: 0644]
suites/rados/thrash-erasure-code/workloads/ec-small-objects-overwrites.yaml [new file with mode: 0644]
suites/rados/thrash-erasure-code/workloads/ec-snaps-few-objects-overwrites.yaml [new file with mode: 0644]
tasks/ceph_manager.py
tasks/rados.py

diff --git a/suites/rados/thrash-erasure-code/workloads/ec-pool-snaps-few-objects-overwrites.yaml b/suites/rados/thrash-erasure-code/workloads/ec-pool-snaps-few-objects-overwrites.yaml
new file mode 100644 (file)
index 0000000..2266dcc
--- /dev/null
@@ -0,0 +1,21 @@
+overrides:
+  ceph:
+    conf:
+      global:
+        enable experimental unrecoverable data corrupting features: '*'
+tasks:
+- rados:
+    clients: [client.0]
+    ops: 4000
+    objects: 50
+    pool_snaps: true
+    ec_pool: true
+    erasure_code_use_hacky_overwrites: true
+    op_weights:
+      read: 100
+      write: 100
+      delete: 50
+      snap_create: 50
+      snap_remove: 50
+      rollback: 50
+      copy_from: 50
diff --git a/suites/rados/thrash-erasure-code/workloads/ec-small-objects-fast-read-overwrites.yaml b/suites/rados/thrash-erasure-code/workloads/ec-small-objects-fast-read-overwrites.yaml
new file mode 100644 (file)
index 0000000..a089a8e
--- /dev/null
@@ -0,0 +1,27 @@
+overrides:
+  ceph:
+    conf:
+      global:
+        enable experimental unrecoverable data corrupting features: '*'
+tasks:
+- rados:
+    clients: [client.0]
+    ops: 400000
+    max_seconds: 600
+    max_in_flight: 64
+    objects: 1024
+    size: 16384
+    ec_pool: true
+    erasure_code_use_hacky_overwrites: true
+    fast_read: true
+    op_weights:
+      read: 100
+      write: 100
+      append: 100
+      delete: 50
+      snap_create: 50
+      snap_remove: 50
+      rollback: 50
+      copy_from: 50
+      setattr: 25
+      rmattr: 25
diff --git a/suites/rados/thrash-erasure-code/workloads/ec-small-objects-overwrites.yaml b/suites/rados/thrash-erasure-code/workloads/ec-small-objects-overwrites.yaml
new file mode 100644 (file)
index 0000000..69bc689
--- /dev/null
@@ -0,0 +1,26 @@
+overrides:
+  ceph:
+    conf:
+      global:
+        enable experimental unrecoverable data corrupting features: '*'
+tasks:
+- rados:
+    clients: [client.0]
+    ops: 400000
+    max_seconds: 600
+    max_in_flight: 64
+    objects: 1024
+    size: 16384
+    ec_pool: true
+    erasure_code_use_hacky_overwrites: true
+    op_weights:
+      read: 100
+      write: 100
+      append: 100
+      delete: 50
+      snap_create: 50
+      snap_remove: 50
+      rollback: 50
+      copy_from: 50
+      setattr: 25
+      rmattr: 25
diff --git a/suites/rados/thrash-erasure-code/workloads/ec-snaps-few-objects-overwrites.yaml b/suites/rados/thrash-erasure-code/workloads/ec-snaps-few-objects-overwrites.yaml
new file mode 100644 (file)
index 0000000..c3ed8c9
--- /dev/null
@@ -0,0 +1,20 @@
+overrides:
+  ceph:
+    conf:
+      global:
+        enable experimental unrecoverable data corrupting features: '*'
+tasks:
+- rados:
+    clients: [client.0]
+    ops: 4000
+    objects: 50
+    ec_pool: true
+    erasure_code_use_hacky_overwrites: true
+    op_weights:
+      read: 100
+      write: 100
+      delete: 50
+      snap_create: 50
+      snap_remove: 50
+      rollback: 50
+      copy_from: 50
index da1f5f46083b66fe29a7dad2f710e41637a775dd..dcfe79387e65f954cf103a539cfbf7181c8912ca 100644 (file)
@@ -1307,7 +1307,8 @@ class CephManager:
 
     def create_pool_with_unique_name(self, pg_num=16,
                                      erasure_code_profile_name=None,
-                                     min_size=None):
+                                     min_size=None,
+                                     erasure_code_use_hacky_overwrites=False):
         """
         Create a pool named unique_pool_X where X is unique.
         """
@@ -1319,7 +1320,8 @@ class CephManager:
                 name,
                 pg_num,
                 erasure_code_profile_name=erasure_code_profile_name,
-                min_size=min_size)
+                min_size=min_size,
+                erasure_code_use_hacky_overwrites=erasure_code_use_hacky_overwrites)
         return name
 
     @contextlib.contextmanager
@@ -1330,13 +1332,16 @@ class CephManager:
 
     def create_pool(self, pool_name, pg_num=16,
                     erasure_code_profile_name=None,
-                    min_size=None):
+                    min_size=None,
+                    erasure_code_use_hacky_overwrites=False):
         """
         Create a pool named from the pool_name parameter.
         :param pool_name: name of the pool being created.
         :param pg_num: initial number of pgs.
         :param erasure_code_profile_name: if set and !None create an
                                           erasure coded pool using the profile
+        :param erasure_code_use_hacky_overwrites: if true, use the hacky
+                                                  overwrites mode
         """
         with self.lock:
             assert isinstance(pool_name, basestring)
@@ -1355,6 +1360,11 @@ class CephManager:
                     'osd', 'pool', 'set', pool_name,
                     'min_size',
                     str(min_size))
+            if erasure_code_use_hacky_overwrites:
+                self.raw_cluster_cmd(
+                    'osd', 'pool', 'set', pool_name,
+                    'debug_white_box_testing_ec_overwrites',
+                    'true')
             self.pools[pool_name] = pg_num
         time.sleep(1)
 
index 43f560cb850a3ca93bf14b7ee0b5647c431d6863..ad100667aea7660ad8e6178fe3bff5b53c9dfe52 100644 (file)
@@ -55,6 +55,9 @@ def task(ctx, config):
               rollback: 2
               snap_remove: 0
             ec_pool: create an ec pool, defaults to False
+            erasure_code_use_hacky_overwrites: use the whitebox
+                                               testing experimental
+                                               overwrites mode
             erasure_code_profile:
               name: teuthologyprofile
               k: 2
@@ -135,7 +138,11 @@ def task(ctx, config):
         '{tdir}/archive/coverage'.format(tdir=testdir),
         'ceph_test_rados']
     if config.get('ec_pool', False):
-        args.extend(['--ec-pool'])
+        args.extend(['--no-omap'])
+        if config.get('erasure_code_use_hacky_overwrites', False):
+            args.extend(['--no-sparse'])
+        else:
+            args.extend(['--ec-pool'])
     if config.get('write_fadvise_dontneed', False):
         args.extend(['--write-fadvise-dontneed'])
     if config.get('pool_snaps', False):
@@ -221,7 +228,11 @@ def task(ctx, config):
                 if not pool and existing_pools:
                     pool = existing_pools.pop()
                 else:
-                    pool = manager.create_pool_with_unique_name(erasure_code_profile_name=profile_name)
+                    pool = manager.create_pool_with_unique_name(
+                        erasure_code_profile_name=profile_name,
+                        erasure_code_use_hacky_overwrites=
+                          config.get('erasure_code_use_hacky_overwrites', False)
+                    )
                     created_pools.append(pool)
                     if config.get('fast_read', False):
                         manager.raw_cluster_cmd(