You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@resilientdb.apache.org by ju...@apache.org on 2025/04/16 18:53:23 UTC
(incubator-resilientdb) branch local_perf created (now 68ed3c5d)
This is an automated email from the ASF dual-hosted git repository.
junchao pushed a change to branch local_perf
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git
at 68ed3c5d add local per
This branch includes the following new commits:
new 49915c37 add local per
new 68ed3c5d add local per
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(incubator-resilientdb) 01/02: add local per
Posted by ju...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
junchao pushed a commit to branch local_perf
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git
commit 49915c37e6856c160d8a5edf2b288d6fc158246c
Author: junchao <ju...@node0.junchao-253024.apacheresdb-pg0.utah.cloudlab.us>
AuthorDate: Wed Apr 16 12:52:28 2025 -0600
add local per
---
.../deploy/config/kv_performance_server_local.conf | 9 ++
.../deploy/performance_local/calculate_result.py | 71 +++++++++
.../deploy/performance_local/pbft_performance.sh | 24 +++
.../deploy/performance_local/poe_performance.sh | 23 +++
.../deploy/performance_local/run_performance.sh | 60 ++++++++
scripts/deploy/script/deploy_local.sh | 169 +++++++++++++++++++++
6 files changed, 356 insertions(+)
diff --git a/scripts/deploy/config/kv_performance_server_local.conf b/scripts/deploy/config/kv_performance_server_local.conf
new file mode 100644
index 00000000..3a16d95e
--- /dev/null
+++ b/scripts/deploy/config/kv_performance_server_local.conf
@@ -0,0 +1,9 @@
+iplist=(
+127.0.0.1
+127.0.0.1
+127.0.0.1
+127.0.0.1
+127.0.0.1
+)
+
+client_num=1
diff --git a/scripts/deploy/performance_local/calculate_result.py b/scripts/deploy/performance_local/calculate_result.py
new file mode 100644
index 00000000..f6892d26
--- /dev/null
+++ b/scripts/deploy/performance_local/calculate_result.py
@@ -0,0 +1,71 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import sys
+
+def read_tps(file):
+ tps = []
+ lat = []
+ with open(file) as f:
+ for l in f.readlines():
+ s = l.split()
+ for r in s:
+ if(r.split(':')[0] == 'txn'):
+ tps.append(int(r.split(':')[1]))
+ if l.find("client latency") > 0:
+ lat.append(float(s[-1].split(':')[-1]))
+ return tps, lat
+
+def cal_tps(tps):
+ tps_sum = []
+ tps_max = 0
+
+ for v in tps:
+ if v == 0:
+ continue
+ tps_max = max(tps_max, v)
+ tps_sum.append(v)
+
+ print("max throughput:",tps_max)
+ print("average throughput:",sum(tps_sum)/len(tps_sum))
+
+def cal_lat(lat):
+ lat_sum = []
+ lat_max = 0
+ for v in lat:
+ if v == 0:
+ continue
+ lat_max = max(lat_max, v)
+ lat_sum.append(v)
+
+ print("max latency:",lat_max)
+ print("average latency:",sum(lat_sum)/len(lat_sum))
+
+if __name__ == '__main__':
+ files = sys.argv[1:]
+ print("calculate results, number of nodes:",len(files))
+
+
+ tps = []
+ lat = []
+ for f in files:
+ t, l=read_tps(f)
+ tps += t
+ lat += l
+
+ cal_tps(tps)
+ cal_lat(lat)
diff --git a/scripts/deploy/performance_local/pbft_performance.sh b/scripts/deploy/performance_local/pbft_performance.sh
new file mode 100755
index 00000000..003b9787
--- /dev/null
+++ b/scripts/deploy/performance_local/pbft_performance.sh
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+export server=//benchmark/protocols/pbft:kv_server_performance
+#export TEMPLATE_PATH=$PWD/config/pbft.config
+export performance=true
+
+./performance_local/run_performance.sh $*
diff --git a/scripts/deploy/performance_local/poe_performance.sh b/scripts/deploy/performance_local/poe_performance.sh
new file mode 100755
index 00000000..fd23e077
--- /dev/null
+++ b/scripts/deploy/performance_local/poe_performance.sh
@@ -0,0 +1,23 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+export server=//benchmark/protocols/poe:kv_server_performance
+export TEMPLATE_PATH=$PWD/config/poe.config
+
+./performance_local/run_performance.sh $*
diff --git a/scripts/deploy/performance_local/run_performance.sh b/scripts/deploy/performance_local/run_performance.sh
new file mode 100755
index 00000000..64f8a3a0
--- /dev/null
+++ b/scripts/deploy/performance_local/run_performance.sh
@@ -0,0 +1,60 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+
+./script/deploy_local.sh $1
+. ./script/load_config.sh $1
+. ./script/env.sh
+
+home_path="./"
+server_name=`echo "$server" | awk -F':' '{print $NF}'`
+server_bin=${server_name}
+
+bazel run //benchmark/protocols/pbft:kv_service_tools -- $PWD/config_out/client.config
+
+sleep 10
+
+echo "benchmark done"
+count=1
+for ip in ${iplist[@]};
+do
+ echo "server bin:"${server_bin}
+killall -9 ${server_bin}
+((count++))
+done
+
+while [ $count -gt 0 ]; do
+ wait $pids
+ count=`expr $count - 1`
+done
+
+idx=1
+echo "getting results"
+for ip in ${iplist[@]};
+do
+ echo "cp ${home_path}/${server_bin}.log ./${ip}_${idx}_log"
+ cp ${home_path}/resilientdb_app/${idx}/${server_bin}.log result_${ip}_${idx}_log
+ ((idx++))
+done
+
+python3 performance/calculate_result.py `ls result_*_log` > results.log
+
+rm -rf result_*_log
+echo "save result to results.log"
+cat results.log
diff --git a/scripts/deploy/script/deploy_local.sh b/scripts/deploy/script/deploy_local.sh
new file mode 100755
index 00000000..7adb1918
--- /dev/null
+++ b/scripts/deploy/script/deploy_local.sh
@@ -0,0 +1,169 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+set -e
+
+# load environment parameters
+. ./script/env.sh
+
+# load ip list
+. ./script/load_config.sh $1
+
+script_path=${BAZEL_WORKSPACE_PATH}/scripts
+
+if [[ -z $server ]];
+then
+server=//service/kv:kv_service
+fi
+
+# obtain the src path
+main_folder=resilientdb_app
+server_path=`echo "$server" | sed 's/:/\//g'`
+server_path=${server_path:1}
+server_name=`echo "$server" | awk -F':' '{print $NF}'`
+server_bin=${server_name}
+grafna_port=8090
+
+bin_path=${BAZEL_WORKSPACE_PATH}/bazel-bin/${server_path}
+output_path=${script_path}/deploy/config_out
+output_key_path=${output_path}/cert
+output_cert_path=${output_key_path}
+export home_path=${script_path}/deploy
+
+admin_key_path=${script_path}/deploy/data/cert
+
+rm -rf ${output_path}
+mkdir -p ${output_path}
+
+deploy_iplist=${iplist[@]}
+
+
+echo "server src path:"${server_path}
+echo "server bazel bin path:"${bin_path}
+echo "server name:"${server_bin}
+echo "admin config path:"${admin_key_path}
+echo "output path:"${output_path}
+echo "deploy to :"${deploy_iplist[@]}
+
+# generate keys and certificates.
+
+cd ${script_path}
+echo "where am i:"$PWD
+
+deploy/script/generate_admin_key.sh ${BAZEL_WORKSPACE_PATH} ${admin_key_path}
+deploy/script/generate_key.sh ${BAZEL_WORKSPACE_PATH} ${output_key_path} ${#iplist[@]}
+deploy/script/generate_config.sh ${BAZEL_WORKSPACE_PATH} ${output_key_path} ${output_cert_path} ${output_path} ${admin_key_path} ${deploy_iplist[@]}
+
+# build kv server
+bazel build ${server}
+
+if [ $? != 0 ]
+then
+ echo "Complile ${server} failed"
+ exit 0
+fi
+
+# commands functions
+function run_cmd(){
+ echo "run cmd:"$1
+ count=1
+ idx=1
+ for ip in ${deploy_iplist[@]};
+ do
+ cd ${home_path}/${main_folder}/$idx;
+ `$1`
+ ((count++))
+ ((idx++))
+ done
+
+ while [ $count -gt 0 ]; do
+ wait $pids
+ count=`expr $count - 1`
+ done
+}
+
+function run_one_cmd(){
+ echo "run one:"$1
+ $1
+}
+
+run_cmd "killall -9 ${server_bin}"
+if [ $performance ];
+then
+run_cmd "rm -rf ${home_path}/${main_folder}"
+fi
+
+idx=1
+for ip in ${deploy_iplist[@]};
+do
+ run_one_cmd "mkdir -p ${home_path}/${main_folder}/$idx" &
+ ((count++))
+ ((idx++))
+done
+
+
+# upload config files and binary
+echo "upload configs"
+idx=1
+count=0
+for ip in ${deploy_iplist[@]};
+do
+ echo "cp -r ${bin_path} ${output_path}/server.config ${output_path}/cert ${home_path}/${main_folder}/$idx"
+ cp -r ${bin_path} ${output_path}/server.config ${output_path}/cert ${home_path}/${main_folder}/$idx &
+ ((count++))
+ ((idx++))
+done
+
+while [ $count -gt 0 ]; do
+ wait $pids
+ count=`expr $count - 1`
+done
+
+echo "start to run" $PWD
+# Start server
+idx=1
+count=0
+for ip in ${deploy_iplist[@]};
+do
+ private_key="cert/node_"${idx}".key.pri"
+ cert="cert/cert_"${idx}".cert"
+ cd ${home_path}/${main_folder}/$idx; nohup ./${server_bin} server.config ${private_key} ${cert} ${grafna_port} > ${server_bin}.log 2>&1 &
+ ((count++))
+ ((idx++))
+ ((grafna_port++))
+done
+
+# Check ready logs
+idx=1
+for ip in ${deploy_iplist[@]};
+do
+ resp=""
+ while [ "$resp" = "" ]
+ do
+ cd ${home_path}/${main_folder}/$idx;
+ resp=`grep "receive public size:${#iplist[@]}" ${server_bin}.log`
+ if [ "$resp" = "" ]; then
+ sleep 1
+ fi
+ done
+ ((idx++))
+done
+
+echo "Servers are running....."
+
(incubator-resilientdb) 02/02: add local per
Posted by ju...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
junchao pushed a commit to branch local_perf
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git
commit 68ed3c5d6a2692d0624e342b2eb87fc5054549f1
Author: junchao <ju...@node0.junchao-253024.apacheresdb-pg0.utah.cloudlab.us>
AuthorDate: Wed Apr 16 12:52:49 2025 -0600
add local per
---
scripts/deploy/performance_local/run_performance.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/deploy/performance_local/run_performance.sh b/scripts/deploy/performance_local/run_performance.sh
index 64f8a3a0..25cab4cf 100755
--- a/scripts/deploy/performance_local/run_performance.sh
+++ b/scripts/deploy/performance_local/run_performance.sh
@@ -28,7 +28,7 @@ server_bin=${server_name}
bazel run //benchmark/protocols/pbft:kv_service_tools -- $PWD/config_out/client.config
-sleep 10
+sleep 60
echo "benchmark done"
count=1