in baselines.py [0:0]
def data_placement_random(self):
on_prem_capacity_left = self.on_prem_capacity - self.on_prem_data_size
cloud_capacity_left = self.total_data_size - self.on_prem_capacity
print(f"on-prem capacity left: {human_readable_size(on_prem_capacity_left)}, "
f"cloud capacity left: {human_readable_size(cloud_capacity_left)}")
prob_on_prem = on_prem_capacity_left / (on_prem_capacity_left + cloud_capacity_left)
placed_tables = self.placement.keys()
for table, size in self.table_size_lookup.items():
if table in placed_tables:
continue
if on_prem_capacity_left > size and cloud_capacity_left > size:
if random() < prob_on_prem:
self.placement[table] = Status.ONPREM
on_prem_capacity_left -= size
else:
self.placement[table] = Status.CLOUD
cloud_capacity_left -= size
elif on_prem_capacity_left > size:
self.placement[table] = Status.ONPREM
on_prem_capacity_left -= size
elif cloud_capacity_left > size:
self.placement[table] = Status.CLOUD
cloud_capacity_left -= size
else:
# print(f"Table {table} ({human_readable_size(size)}) is larger than remaining capacity "
# f"on-prem ({human_readable_size(on_prem_capacity_left)}) "
# f"and cloud ({human_readable_size(cloud_capacity_left)})")
self.placement[table] = Status.CLOUD
cloud_capacity_left -= size
self.on_prem_data_size = self.on_prem_capacity - on_prem_capacity_left
print(f"on-prem data size: {human_readable_size(self.on_prem_data_size)}")