-
Notifications
You must be signed in to change notification settings - Fork 1
/
prototype_experiment.sh
executable file
·75 lines (54 loc) · 2.53 KB
/
prototype_experiment.sh
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
#!/bin/bash
module load prun
source config.cfg
mkdir -p server_logs
mkdir -p client_logs
server_ip=$(ssh $server_node "hostname -I | cut -d ' ' -f1")
echo "Starting server on $server_node at $server_ip:7777..."
ssh $server_node "${prototype_server_command} > ./Net-Celerity/server_logs/server_output.log 2>&1 &" &
sleep 5
server_pid=$(ssh $server_node "pgrep -f '${prototype_server_command}'")
echo "Starting system monitoring script on $server_node..."
ssh $server_node "python3 Net-Celerity/system_monitor.py ./Net-Celerity/system_logs/${prototype_name}/system_log_${num_players}p_${benchmark_duration}s.csv $server_pid &" &
# Calculate number of clients per node
clients_per_node=$((num_players / client_nodes_number))
echo "Starting clients..."
for node_index in $(seq 1 $client_nodes_number); do
client_node_var="client_node$node_index"
client_node=${!client_node_var}
start_client=$(( (node_index - 1) * clients_per_node + 1 ))
end_client=$(( node_index * clients_per_node ))
for i in $(seq $start_client $end_client); do
echo "Starting client $i on $client_node..."
# ssh $client_node "$prototype_client_command -server_ip $server_ip -server_port 7777 -client -emulationType Playback -emulationFile ${mirror_inputs}player_input${i}.inputtrace > ./Net-Celerity/client_logs/client${i}_output.log 2>&1 &" &
ssh $client_node "$prototype_client_command -server_ip $server_ip -server_port 7777 -client > ./Net-Celerity/client_logs/client${i}_output.log 2>&1 &" &
sleep $clinet_interval
done
done
sleep 5
echo "Benchmarking for $benchmark_duration seconds..."
sleep $benchmark_duration
echo "Stopping system monitoring script on $server_node..."
ssh $server_node "pkill -f 'python3 Net-Celerity/system_monitor.py'"
echo "Stopping server..."
ssh $server_node "kill $server_pid"
sleep 2
ssh $server_node "kill -0 $server_pid" && ssh $server_node "kill -9 $server_pid"
echo "Stopping clients..."
for node_index in $(seq 1 $client_nodes_number); do
client_node_var="client_node$node_index"
client_node=${!client_node_var}
ssh $client_node "pkill ${prototype_name}.x86_64"
sleep 2
ssh $client_node "pkill -0 ${prototype_name}.x86_64" && ssh $client_node "pkill -9 ${prototype_name}.x86_64"
done
echo "Running collection script.."
python3 $collection_script $prototype_logs $output_file
wait
echo "Deleting server and client logs..."
rm -rf ./server_logs/*
rm -rf ./client_logs/*
echo "Deleting prototype logs..."
rm ${prototype_logs}/*
echo "Benchmarking completed."
echo "Script execution complete."