-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgen_hosts_file.py
85 lines (68 loc) · 2.82 KB
/
gen_hosts_file.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Generate hosts.csv file
# Usage: python gen_hosts_file.py zedro.hosts /local/deploy/hosts.csv <l1-servers> <l1-per-server> <l1-cores> <l2-servers> <l2-per-server> <l2-cores> <l3-servers> <l3-per-server> <l3-cores> <kv-servers> <kv-per-server> <kv-cores> <clients> <l1-replicas> <l2-replicas>
import sys
kv_base_port = 14000
l1_base_port = 10000
l2_base_port = 11000
l3_base_port = 13000
inp_hosts = sys.argv[1]
out_hosts = sys.argv[2]
num_l1_servers = int(sys.argv[3])
num_l1_per_server = int(sys.argv[4])
num_l1_cores = int(sys.argv[5])
num_l2_servers = int(sys.argv[6])
num_l2_per_server = int(sys.argv[7])
num_l2_cores = int(sys.argv[8])
num_l3_servers = int(sys.argv[9])
num_l3_per_server = int(sys.argv[10])
num_l3_cores = int(sys.argv[11])
num_kv_servers = int(sys.argv[12])
num_kv_per_server = int(sys.argv[13])
num_kv_cores = int(sys.argv[14])
num_clients = int(sys.argv[15])
num_l1_replicas = int(sys.argv[16])
num_l2_replicas = int(sys.argv[17])
cores_per_server = 16
cores = [str(i) for i in range(cores_per_server)]
servers = []
f = open(inp_hosts, 'r')
for line in f:
if line.strip() == '':
continue
servers.append(line.strip())
f.close()
print('%d servers' % (len(servers)))
required_servers = num_l1_servers*num_l1_replicas + num_l2_servers*num_l2_replicas + num_l3_servers + num_kv_servers + num_clients
if required_servers > len(servers):
print('Not enough servers')
exit(-1)
f = open(out_hosts, 'w')
idx = 0
idx += num_clients
for i in range(num_kv_servers):
core_idx = 0
for j in range(num_kv_per_server):
f.write('kv_%d_%d KV %s %d 0 %d 1 %s\n' % (i, j, servers[idx], kv_base_port + j, i*num_kv_per_server + j, ','.join(cores[core_idx:core_idx+num_kv_cores])))
core_idx += num_kv_cores
idx += 1
for r in range(num_l1_replicas):
for i in range(num_l1_servers):
core_idx = 0
for j in range(num_l1_per_server):
f.write('l1_%d_%d_%d L1 %s %d %d %d %d %s\n' % (r, i, j, servers[idx], l1_base_port + core_idx, r, i*num_l1_per_server + j, num_l1_cores,','.join(cores[core_idx:core_idx+num_l1_cores])))
core_idx += num_l1_cores
idx += 1
for r in range(num_l2_replicas):
for i in range(num_l2_servers):
core_idx = 0
for j in range(num_l2_per_server):
f.write('l2_%d_%d_%d L2 %s %d %d %d %d %s\n' % (r, i, j, servers[idx], l2_base_port + core_idx, r, i*num_l2_per_server + j, num_l2_cores, ','.join(cores[core_idx:core_idx+num_l2_cores])))
core_idx += num_l2_cores
idx += 1
for i in range(num_l3_servers):
core_idx = 0
for j in range(num_l3_per_server):
f.write('l3_%d_%d L3 %s %d 0 %d %d %s\n' % (i, j, servers[idx], l3_base_port + core_idx, i*num_l3_per_server + j, num_l3_cores, ','.join(cores[core_idx:core_idx+num_l3_cores])))
core_idx += num_l3_cores
idx += 1
f.close()