Skip to content

Commit

Permalink
Cache tier support
Browse files Browse the repository at this point in the history
Closes-Bug: #1579210
Reorganized code to enable easy SM integration.

Change-Id: If6098ae55c1c086697210408c0ec6afa64141ae3
  • Loading branch information
Jeya ganesh babu J committed Jun 3, 2016
1 parent 2d845c8 commit 73b5348
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 45 deletions.
49 changes: 49 additions & 0 deletions contrail_provisioning/storage/storagefs/ceph_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1830,3 +1830,52 @@ def create_and_apply_ceph_deploy_patch(self):
self.exec_local('cd /usr/lib/python2.7/dist-packages/ && patch -N -p0 <%s'
%(CEPH_DEPLOY_PATCH_FILE))
#end create_and_apply_ceph_deploy_patch

# Function to configure Ceph cache tier
def do_configure_ceph_cache_tier(self, ceph_pool_list, ceph_tier_list,
storage_replica_size):
num_hdd_pool = len(ceph_tier_list)
if num_hdd_pool == 0:
return
index = 0
for entry in ceph_pool_list:
if index >= num_hdd_pool:
return
total_ssd_size_st = self.exec_local('sudo ceph df | grep -w %s | \
awk \'{print $5}\''
%(ceph_tier_list[index]))
size_mult_st = total_ssd_size_st[len(total_ssd_size_st) - 1]
if size_mult_st == 'T':
size_mult = 1024 * 1024 * 1024 * 1024
elif size_mult_st == 'G':
size_mult = 1024 * 1024 * 1024
elif size_mult_st == 'M':
size_mult = 1024 * 1024
elif size_mult_st == 'K':
size_mult = 1024
total_ssd_size = int(total_ssd_size_st[:-1])
total_ssd_size = total_ssd_size * size_mult
if storage_replica_size != 'None':
replica_size = int(storage_replica_size)
else:
replica_size = 2
cache_size = total_ssd_size / replica_size
self.exec_locals('sudo ceph osd tier add %s %s'
%(ceph_pool_list[index], ceph_tier_list[index]))
self.exec_locals('sudo ceph osd tier cache-mode %s writeback'
%(ceph_tier_list[index]))
self.exec_locals('sudo ceph osd tier set-overlay %s %s'
%(ceph_pool_list[index], ceph_tier_list[index]))
self.exec_locals('sudo ceph osd pool set %s hit_set_type bloom'
%(ceph_tier_list[index]))
self.exec_locals('sudo ceph osd pool set %s hit_set_count 1'
%(ceph_tier_list[index]))
self.exec_locals('sudo ceph osd pool set %s hit_set_period 3600'
%(ceph_tier_list[index]))
self.exec_locals('sudo ceph osd pool set %s target_max_bytes %s'
%(ceph_tier_list[index], cache_size))
self.exec_locals('ceph osd pool set %s min_read_recency_for_promote 1'
%(ceph_tier_list[index]))
index += 1
return
#end do_configure_ceph_cache_tier
50 changes: 5 additions & 45 deletions contrail_provisioning/storage/storagefs/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -1957,51 +1957,11 @@ def do_configure_ceph_auth(self):
def do_configure_ceph_cache_tier(self):
global ceph_pool_list
global ceph_tier_list
num_hdd_pool = len(ceph_tier_list)
if num_hdd_pool == 0:
return
index = 0
for entry in ceph_pool_list:
if index >= num_hdd_pool:
return
total_ssd_size_st = local('sudo ceph df | grep -w %s | \
awk \'{print $5}\''
%(ceph_tier_list[index]), capture=True,
shell='/bin/bash')
size_mult_st = total_ssd_size_st[len(total_ssd_size_st) - 1]
if size_mult_st == 'T':
size_mult = 1024 * 1024 * 1024 * 1024
elif size_mult_st == 'G':
size_mult = 1024 * 1024 * 1024
elif size_mult_st == 'M':
size_mult = 1024 * 1024
elif size_mult_st == 'K':
size_mult = 1024
total_ssd_size = int(total_ssd_size_st[:-1])
total_ssd_size = total_ssd_size * size_mult
if self._args.storage_replica_size != 'None':
replica_size = int(self._args.storage_replica_size)
else:
replica_size = 2
cache_size = total_ssd_size / replica_size
local('sudo ceph osd tier add %s %s'
%(ceph_pool_list[index], ceph_tier_list[index]))
local('sudo ceph osd tier cache-mode %s writeback'
%(ceph_tier_list[index]))
local('sudo ceph osd tier set-overlay %s %s'
%(ceph_pool_list[index], ceph_tier_list[index]))
local('sudo ceph osd pool set %s hit_set_type bloom'
%(ceph_tier_list[index]))
local('sudo ceph osd pool set %s hit_set_count 1'
%(ceph_tier_list[index]))
local('sudo ceph osd pool set %s hit_set_period 3600'
%(ceph_tier_list[index]))
local('sudo ceph osd pool set %s target_max_bytes %s'
%(ceph_tier_list[index], cache_size))
local('ceph osd pool set %s min_read_recency_for_promote 1'
%(ceph_tier_list[index]))
index += 1
return

ceph_utils = SetupCephUtils()
ceph_utils.do_configure_ceph_cache_tier(ceph_pool_list,
ceph_tier_list,
self._args.storage_replica_size)
#end do_configure_ceph_cache_tier

# Function for Virsh/Cinder configurations for Ceph
Expand Down

0 comments on commit 73b5348

Please sign in to comment.