Skip to content

Commit 855dc5a

Browse files
authored
Minor code quality improvements & script fixes (#22)
1 parent 0ce946b commit 855dc5a

36 files changed

+260
-654
lines changed

Cargo.toml

+8-8
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ authors = ["Guanzhou Hu <[email protected]>"]
1010

1111
[dependencies]
1212
async-trait = "0.1"
13-
fixedbitset = { version = "0.4", features = ["serde"] }
14-
rangemap = "1.4"
13+
fixedbitset = { version = "0.5", features = ["serde"] }
14+
rangemap = "1.5"
1515
flashmap = "0.1"
16-
bytes = { version = "1.4", features = ["serde"] }
16+
bytes = { version = "1.7", features = ["serde"] }
1717
futures = "0.3"
18-
tokio = { version = "1.29", features = ["full"] }
18+
tokio = { version = "1.39", features = ["full"] }
1919
rand = "0.8"
20-
lazy_static = "1.4"
21-
rmp-serde = "1.1"
20+
lazy_static = "1.5"
2221
serde = { version = "1.0", features = ["derive"] }
23-
toml = { version = "0.7", features = ["parse"] }
22+
bincode = "1.3"
23+
toml = { version = "0.8", features = ["parse"] }
2424
log = "0.4"
25-
env_logger = "0.10"
25+
env_logger = "0.11"
2626
reed-solomon-erasure = { version = "6.0" }
2727
ctrlc = { version = "3.4", features = ["termination"] }
2828
get-size = { version = "0.1", features = ["derive"] }

scripts/distr_clients.py

+2-13
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@
1111
TOML_FILENAME = "scripts/remote_hosts.toml"
1212

1313

14-
CLIENT_LOOP_IP = "0.0.0.0"
15-
CLIENT_BIND_BASE_PORT = lambda p, c: 42000 + (p * 100 + c) * 10
16-
17-
MANAGER_CLI_PORT = lambda p: 40001 + p * 10
14+
MANAGER_CLI_PORT = lambda p: 40009 + p * 20 # NOTE: assuming at most 9 servers
1815

1916

2017
CLIENT_OUTPUT_PATH = (
@@ -91,15 +88,11 @@ def glue_params_str(cli_args, params_list):
9188
return "+".join(params_strs)
9289

9390

94-
def compose_client_cmd(
95-
protocol, bind_base, manager, config, utility, timeout_ms, params, release
96-
):
91+
def compose_client_cmd(protocol, manager, config, utility, timeout_ms, params, release):
9792
cmd = [f"./target/{'release' if release else 'debug'}/summerset_client"]
9893
cmd += [
9994
"-p",
10095
protocol,
101-
"-b",
102-
bind_base,
10396
"-m",
10497
manager,
10598
"--timeout-ms",
@@ -153,13 +146,9 @@ def run_clients(
153146

154147
client_procs = []
155148
for i in range(num_clients):
156-
client = base_idx + i
157-
bind_base = f"{CLIENT_LOOP_IP}:{CLIENT_BIND_BASE_PORT(partition, client)}"
158149
manager_addr = f"{manager_pub_ip}:{MANAGER_CLI_PORT(partition)}"
159-
160150
cmd = compose_client_cmd(
161151
protocol,
162-
bind_base,
163152
manager_addr,
164153
config,
165154
utility,

scripts/distr_cluster.py

+10-19
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@
1111

1212

1313
SERVER_LOOP_IP = "0.0.0.0"
14-
SERVER_API_PORT = lambda p, r: 40100 + (p * 10 + r)
15-
SERVER_P2P_PORT = lambda p, r: 40200 + (p * 10 + r)
16-
SERVER_BIND_BASE_PORT = lambda p, r: 41000 + (p * 10 + r) * 10
14+
SERVER_API_PORT = lambda p, r: 40000 + (p * 20 + r)
15+
SERVER_P2P_PORT = lambda p, r: 40010 + (p * 20 + r)
1716

1817
MANAGER_LOOP_IP = "0.0.0.0"
19-
MANAGER_SRV_PORT = lambda p: 40000 + p * 10
20-
MANAGER_CLI_PORT = lambda p: 40001 + p * 10
18+
MANAGER_CLI_PORT = lambda p: 40009 + p * 20 # NOTE: assuming at most 9 servers
19+
MANAGER_SRV_PORT = lambda p: 40019 + p * 20
2120

2221

2322
PROTOCOL_BACKER_PATH = (
@@ -127,29 +126,26 @@ def config_dict_to_str(d):
127126
return config_dict_to_str(config_dict)
128127

129128

130-
def compose_manager_cmd(protocol, bind_ip, srv_port, cli_port, num_replicas, release):
129+
def compose_manager_cmd(protocol, srv_port, cli_port, num_replicas, release):
131130
cmd = [f"./target/{'release' if release else 'debug'}/summerset_manager"]
132131
cmd += [
133132
"-p",
134133
protocol,
135134
"-b",
136-
bind_ip,
137-
"-s",
138-
str(srv_port),
135+
MANAGER_LOOP_IP,
139136
"-c",
140137
str(cli_port),
138+
"-s",
139+
str(srv_port),
141140
"-n",
142141
str(num_replicas),
143142
]
144143
return cmd
145144

146145

147146
def launch_manager(protocol, partition, num_replicas, release):
148-
bind_ip = MANAGER_LOOP_IP
149-
150147
cmd = compose_manager_cmd(
151148
protocol,
152-
bind_ip,
153149
MANAGER_SRV_PORT(partition),
154150
MANAGER_CLI_PORT(partition),
155151
num_replicas,
@@ -177,15 +173,13 @@ def wait_manager_setup(proc):
177173
break
178174

179175

180-
def compose_server_cmd(
181-
protocol, bind_base, api_port, p2p_port, manager, config, release
182-
):
176+
def compose_server_cmd(protocol, api_port, p2p_port, manager, config, release):
183177
cmd = [f"./target/{'release' if release else 'debug'}/summerset_server"]
184178
cmd += [
185179
"-p",
186180
protocol,
187181
"-b",
188-
bind_base,
182+
SERVER_LOOP_IP,
189183
"-a",
190184
str(api_port),
191185
"-i",
@@ -224,13 +218,10 @@ def launch_servers(
224218
server_procs = []
225219
for replica in range(num_replicas):
226220
host = hosts[replica]
227-
228-
bind_base = f"{SERVER_LOOP_IP}:{SERVER_BIND_BASE_PORT(partition, replica)}"
229221
manager_addr = f"{manager_pub_ip}:{MANAGER_SRV_PORT(partition)}"
230222

231223
cmd = compose_server_cmd(
232224
protocol,
233-
bind_base,
234225
SERVER_API_PORT(partition, replica),
235226
SERVER_P2P_PORT(partition, replica),
236227
manager_addr,

scripts/local_clients.py

+2-15
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,9 @@
88
import utils
99

1010

11-
CLIENT_LOOP_IP = "127.0.0.1"
12-
CLIENT_VETH_IP = lambda c: f"10.0.2.{c}"
13-
CLIENT_BIND_BASE_PORT = lambda c: 32000 + c * 10
14-
1511
MANAGER_LOOP_IP = "127.0.0.1"
1612
MANAGER_VETH_IP = "10.0.0.0"
17-
MANAGER_CLI_PORT = 30001
13+
MANAGER_CLI_PORT = 30009 # NOTE: assuming at most 9 servers
1814

1915

2016
CLIENT_OUTPUT_PATH = (
@@ -82,15 +78,11 @@ def glue_params_str(cli_args, params_list):
8278
return "+".join(params_strs)
8379

8480

85-
def compose_client_cmd(
86-
protocol, bind_base, manager, config, utility, timeout_ms, params, release
87-
):
81+
def compose_client_cmd(protocol, manager, config, utility, timeout_ms, params, release):
8882
cmd = [f"./target/{'release' if release else 'debug'}/summerset_client"]
8983
cmd += [
9084
"-p",
9185
protocol,
92-
"-b",
93-
bind_base,
9486
"-m",
9587
manager,
9688
"--timeout-ms",
@@ -128,16 +120,11 @@ def run_clients(
128120

129121
client_procs = []
130122
for i in range(num_clients):
131-
client = base_idx + i
132-
bind_base = f"{CLIENT_LOOP_IP}:{CLIENT_BIND_BASE_PORT(client)}"
133123
manager_addr = f"{MANAGER_LOOP_IP}:{MANAGER_CLI_PORT}"
134124
if use_veth:
135-
bind_base = f"{CLIENT_VETH_IP(client)}:{CLIENT_BIND_BASE_PORT(client)}"
136125
manager_addr = f"{MANAGER_VETH_IP}:{MANAGER_CLI_PORT}"
137-
138126
cmd = compose_client_cmd(
139127
protocol,
140-
bind_base,
141128
manager_addr,
142129
config,
143130
utility,

scripts/local_cluster.py

+11-16
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,13 @@
99

1010
SERVER_LOOP_IP = "127.0.0.1"
1111
SERVER_VETH_IP = lambda r: f"10.0.1.{r}"
12-
SERVER_API_PORT = lambda r: 30100 + r
13-
SERVER_P2P_PORT = lambda r: 30200 + r
14-
SERVER_BIND_BASE_PORT = lambda r: 31000 + r * 10
12+
SERVER_API_PORT = lambda r: 30000 + r
13+
SERVER_P2P_PORT = lambda r: 30010 + r
1514

1615
MANAGER_LOOP_IP = "127.0.0.1"
1716
MANAGER_VETH_IP = "10.0.0.0"
18-
MANAGER_SRV_PORT = 30000
19-
MANAGER_CLI_PORT = 30001
17+
MANAGER_CLI_PORT = 30009 # NOTE: assuming at most 9 servers
18+
MANAGER_SRV_PORT = 30019
2019

2120

2221
PROTOCOL_BACKER_PATH = (
@@ -119,10 +118,10 @@ def compose_manager_cmd(protocol, bind_ip, srv_port, cli_port, num_replicas, rel
119118
protocol,
120119
"-b",
121120
bind_ip,
122-
"-s",
123-
str(srv_port),
124121
"-c",
125122
str(cli_port),
123+
"-s",
124+
str(srv_port),
126125
"-n",
127126
str(num_replicas),
128127
]
@@ -133,7 +132,6 @@ def launch_manager(protocol, num_replicas, release, use_veth):
133132
bind_ip = MANAGER_LOOP_IP
134133
if use_veth:
135134
bind_ip = MANAGER_VETH_IP
136-
137135
cmd = compose_manager_cmd(
138136
protocol,
139137
bind_ip,
@@ -164,15 +162,13 @@ def wait_manager_setup(proc):
164162
break
165163

166164

167-
def compose_server_cmd(
168-
protocol, bind_base, api_port, p2p_port, manager, config, release
169-
):
165+
def compose_server_cmd(protocol, bind_ip, api_port, p2p_port, manager, config, release):
170166
cmd = [f"./target/{'release' if release else 'debug'}/summerset_server"]
171167
cmd += [
172168
"-p",
173169
protocol,
174170
"-b",
175-
bind_base,
171+
bind_ip,
176172
"-a",
177173
str(api_port),
178174
"-i",
@@ -202,15 +198,14 @@ def launch_servers(
202198

203199
server_procs = []
204200
for replica in range(num_replicas):
205-
bind_base = f"{SERVER_LOOP_IP}:{SERVER_BIND_BASE_PORT(replica)}"
201+
bind_ip = SERVER_LOOP_IP
206202
manager_addr = f"{MANAGER_LOOP_IP}:{MANAGER_SRV_PORT}"
207203
if use_veth:
208-
bind_base = f"{SERVER_VETH_IP(replica)}:{SERVER_BIND_BASE_PORT(replica)}"
204+
bind_ip = SERVER_VETH_IP
209205
manager_addr = f"{MANAGER_VETH_IP}:{MANAGER_SRV_PORT}"
210-
211206
cmd = compose_server_cmd(
212207
protocol,
213-
bind_base,
208+
bind_ip,
214209
SERVER_API_PORT(replica),
215210
SERVER_P2P_PORT(replica),
216211
manager_addr,

scripts/remote_hosts.toml

+13-12
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,20 @@ repo_name = "summerset"
44

55
# (SET PROPERLY) for each group, its username @ DNS domain names
66
[1dc]
7-
8-
9-
10-
11-
12-
13-
14-
15-
167

17-
[wan]
188
199
2010
21-
22-
11+
# host3 = "[email protected]"
12+
# host4 = "[email protected]"
13+
# host5 = "[email protected]"
14+
# host6 = "[email protected]"
15+
# host7 = "[email protected]"
16+
# host8 = "[email protected]"
17+
18+
# [wan]
19+
# host0 = "[email protected]"
20+
# host1 = "[email protected]"
21+
# host2 = "[email protected]"
22+
# host3 = "[email protected]"
23+
# host4 = "[email protected]"

scripts/setup/install_devdeps.sh

+10-10
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ sudo apt -y upgrade
1717

1818
echo
1919
echo "Installing necessary apt packages..."
20-
sudo apt -y install htop
21-
sudo apt -y install tree
22-
sudo apt -y install cloc
23-
sudo apt -y install python3-pip
24-
sudo apt -y install iperf3
25-
sudo apt -y install iptables-persistent
26-
sudo apt -y install screen
20+
sudo apt -y install htop \
21+
tree \
22+
cloc \
23+
python3-pip \
24+
iperf3 \
25+
iptables-persistent \
26+
screen
2727

2828

2929
echo
@@ -38,9 +38,9 @@ sudo chown -R ${USER} /usr/local/cargo
3838

3939
echo
4040
echo "Installing necessary pip packages..."
41-
sudo -H pip3 install numpy
42-
sudo -H pip3 install matplotlib
43-
sudo -H pip3 install toml
41+
sudo -H pip3 install numpy \
42+
matplotlib \
43+
toml
4444

4545

4646
echo

scripts/setup/resize_partition.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
TARGET_DEV=/dev/sda
55
PART_NUMBER=3
6+
PART_SIZE=240G
67

78

89
echo
@@ -13,8 +14,7 @@ sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | sudo fdisk ${TARGET_DEV}
1314
n # new partition
1415
${PART_NUMBER} # use partition number
1516
# default start sec
16-
+240G # default end sec
17-
N # not removing ext3 signature
17+
+${PART_SIZE} # default end sec
1818
p # print the resulting table
1919
w # sync to disk
2020
q # done, quit

src/client/apistub.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,9 @@ impl ClientApiStub {
3838
/// Creates a new API connection stub by connecting to the given server.
3939
pub(crate) async fn new_by_connect(
4040
id: ClientId,
41-
bind_addr: SocketAddr,
4241
server: SocketAddr,
4342
) -> Result<Self, SummersetError> {
44-
let mut stream = tcp_connect_with_retry(bind_addr, server, 10).await?;
43+
let mut stream = tcp_connect_with_retry(server, 10).await?;
4544
stream.write_u64(id).await?; // send my client ID
4645
let (read_half, write_half) = stream.into_split();
4746

src/client/ctrlstub.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,9 @@ pub struct ClientCtrlStub {
3737
impl ClientCtrlStub {
3838
/// Creates a new control API stub and connects to the manager.
3939
pub(crate) async fn new_by_connect(
40-
bind_addr: SocketAddr,
4140
manager: SocketAddr,
4241
) -> Result<Self, SummersetError> {
43-
let mut stream = tcp_connect_with_retry(bind_addr, manager, 10).await?;
42+
let mut stream = tcp_connect_with_retry(manager, 10).await?;
4443
let id = stream.read_u64().await?; // receive my client ID
4544
let (read_half, write_half) = stream.into_split();
4645

0 commit comments

Comments
 (0)