Skip to content

Commit eeb7820

Browse files
committed
cluster: Addition of new Scrubbing test
Signed-off-by: Aishwarya Mathuria <amathuri@redhat.com>
1 parent d248111 commit eeb7820

12 files changed

+280
-10
lines changed

benchmark/fio.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ def initialize_endpoints(self):
6666
# Create the recovery image based on test type requested
6767
if 'recovery_test' in self.cluster.config and self.recov_test_type == 'background':
6868
self.client_endpoints_object.create_recovery_image()
69+
if 'scrubbing_test' in self.cluster.config:
70+
self.client_endpoints_object.create_scrubbing_image()
6971
self.create_endpoints()
7072

7173
def create_endpoints(self):
@@ -213,6 +215,12 @@ def run(self):
213215
# Wait for signal to start client IO
214216
self.cluster.wait_start_io()
215217

218+
if 'scrubbing_test' in self.cluster.config:
219+
logger.info('Scrubbing test in config')
220+
scrubbing_callback = self.scrubbing_callback
221+
self.cluster.create_scrubbing_test(self.run_dir, scrubbing_callback)
222+
self.cluster.wait_start_io()
223+
216224
monitoring.start(self.run_dir)
217225

218226
logger.info('Running fio %s test.', self.mode)
@@ -225,6 +233,9 @@ def run(self):
225233
# If we were doing recovery, wait until it's done.
226234
if 'recovery_test' in self.cluster.config:
227235
self.cluster.wait_recovery_done()
236+
# If we were doing scrubbing, wait until it's done.
237+
if 'scrubbing_test' in self.cluster.config:
238+
self.cluster.wait_scrubbing_done()
228239

229240
monitoring.stop(self.run_dir)
230241

@@ -239,6 +250,9 @@ def recovery_callback_blocking(self):
239250
def recovery_callback_background(self):
240251
logger.info('Recovery thread completed!')
241252

253+
def scrubbing_callback(self):
254+
logger.info('Scrubbing thread completed')
255+
242256
def analyze(self, out_dir):
243257
logger.info('Convert results to json format.')
244258
for client in settings.getnodes('clients').split(','):

benchmark/librbdfio.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ def __init__(self, archive_dir, cluster, config):
4646
self.use_existing_volumes = config.get('use_existing_volumes', False)
4747
self.pool_name = config.get("poolname", "cbt-librbdfio")
4848
self.recov_pool_name = config.get("recov_pool_name", "cbt-librbdfio-recov")
49+
self.scrub_pool_name = config.get("scrub_pool_name", "cbt-librbdfio-scrub")
50+
self.scrub_pool_profile = config.get("scrub_pool_profile", "default")
4951
self.rbdname = config.get('rbdname', '')
5052

5153
self.total_procs = self.procs_per_volume * self.volumes_per_client * len(settings.getnodes('clients').split(','))
@@ -80,6 +82,9 @@ def initialize(self):
8082

8183
common.sync_files('%s/*' % self.run_dir, self.out_dir)
8284

85+
if 'scrubbing_test' in self.cluster.config:
86+
self.mkscrubimage()
87+
8388
# Create the recovery image based on test type requested
8489
if 'recovery_test' in self.cluster.config and self.recov_test_type == 'background':
8590
self.mkrecovimage()
@@ -128,6 +133,11 @@ def run(self):
128133
# Wait for a signal from the recovery thread to initiate client IO
129134
self.cluster.wait_start_io()
130135

136+
if 'scrubbing_test' in self.cluster.config:
137+
scrubbing_callback = self.scrubbing_callback
138+
self.cluster.create_scrub_test(self.run_dir, scrubbing_callback)
139+
self.cluster.wait_start_io()
140+
131141
monitoring.start(self.run_dir)
132142

133143
logger.info('Running rbd fio %s test.', self.mode)
@@ -210,6 +220,18 @@ def mkrecovimage(self):
210220
self.cluster.mkimage('cbt-librbdfio-recov-%s-%d' % (node,volnum), self.vol_size, self.recov_pool_name, self.data_pool, self.vol_object_size)
211221
monitoring.stop()
212222

223+
def mkscrubimage(self):
224+
logger.info('Creating scrubbing image...')
225+
monitoring.start("%s/scrub_pool_monitoring" % self.run_dir)
226+
if (self.use_existing_volumes == False):
227+
self.cluster.rmpool(self.scrub_pool_name, self.scrub_pool_profile)
228+
self.cluster.mkpool(self.scrub_pool_name, self.scrub_pool_profile, 'rbd')
229+
for node in common.get_fqdn_list('clients'):
230+
for volnum in range(0, self.volumes_per_client):
231+
node = node.rpartition("@")[2]
232+
self.cluster.mkimage('cbt-librbdfio-scrub-%s-%d' % (node,volnum), self.vol_size, self.scrub_pool_name, self.data_pool, self.vol_object_size)
233+
monitoring.stop()
234+
213235
def mkimages(self):
214236
monitoring.start("%s/pool_monitoring" % self.run_dir)
215237
if (self.use_existing_volumes == False):
@@ -231,6 +253,9 @@ def recovery_callback_blocking(self):
231253
def recovery_callback_background(self):
232254
logger.info('Recovery thread completed!')
233255

256+
def scrubbing_callback(self):
257+
logger.info('Scrubbing thread completed!')
258+
234259
def parse(self, out_dir):
235260
for client in settings.getnodes('clients').split(','):
236261
host = settings.host_info(client)["host"]

client_endpoints/ceph_client_endpoints.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ def __init__(self, cluster, config):
2626
self.data_pool_profile = config.get('data_pool_profile', None)
2727
self.recov_pool = None
2828
self.recov_pool_profile = config.get('recov_pool_profile', 'default')
29+
self.scrub_pool = None
30+
self.scrub_pool_profile = config.get('scrub_pool_profile', 'default')
2931
self.order = config.get('order', 22)
3032
self.disabled_features = config.get('disabled_features', None)
3133

@@ -114,6 +116,15 @@ def create_rbd_recovery(self):
114116
rbd_name = '%s-%s' % (self.pool, self.get_rbd_name(node, ep_num))
115117
self.cluster.mkimage(rbd_name, self.endpoint_size, self.pool, self.data_pool, self.order)
116118

119+
def create_rbd_scrubbing(self):
120+
self.pool = '%s-scrub' % self.name
121+
self.cluster.rmpool(self.pool, self.scrub_pool_profile)
122+
self.cluster.mkpool(self.pool, self.scrub_pool_profile, 'rbd')
123+
for node in common.get_fqdn_list('clients'):
124+
for ep_num in range(0, self.endpoints_per_client):
125+
rbd_name = '%s-%s' % (self.pool, self.get_rbd_name(node, ep_num))
126+
self.cluster.mkimage(rbd_name, self.get_endpoint_size, self.pool, self.data_pool, self.order)
127+
117128
def mount_rbd(self):
118129
for ep_num in range(0, self.endpoints_per_client):
119130
dir_name = self.get_dir_name(ep_num)

client_endpoints/cephfsfuse_client_endpoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ def mount_fs_helper(self, node, dir_name):
1515

1616
def create_recovery_image(self):
1717
self.create_rbd_recovery()
18+
19+
def create_scrubbing_image(self):
20+
self.create_rbd_scrubbing()

client_endpoints/cephfskernel_client_endpoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ def mount_fs_helper(self, node, dir_name):
1515

1616
def create_recovery_image(self):
1717
self.create_rbd_recovery()
18+
19+
def create_scrubbing_image(self):
20+
self.create_rbd_scrubbing()

client_endpoints/client_endpoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,6 @@ def remove(self):
4545

4646
def create_recovery_image(self):
4747
pass
48+
49+
def create_scrubbing_image(self):
50+
pass

client_endpoints/librbd_client_endpoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,6 @@ def mount(self):
1919

2020
def create_recovery_image(self):
2121
self.create_rbd_recovery()
22+
23+
def create_scrubbing_image(self):
24+
self.create_rbd_scrubbing()

client_endpoints/rbdfuse_client_endpoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ def map_rbd(self, node, rbd_name):
3131

3232
def create_recovery_image(self):
3333
self.create_rbd_recovery()
34+
35+
def create_scrubbing_image(self):
36+
self.create_rbd_scrubbing()

client_endpoints/rbdkernel_client_endpoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,6 @@ def map_rbd(self, node, rbd_name):
2222

2323
def create_recovery_image(self):
2424
self.create_rbd_recovery()
25+
26+
def create_scrubbing_image(self):
27+
self.create_rbd_scrubbing()

client_endpoints/rbdnbd_client_endpoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@ def map_rbd(self, node, rbd_name):
1616

1717
def create_recovery_image(self):
1818
self.create_rbd_recovery()
19+
20+
def create_scrubbing_image(self):
21+
self.create_rbd_scrubbing()

0 commit comments

Comments
 (0)