[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-grid5k] 57/73: improve wallet script
From: |
gnunet |
Subject: |
[taler-grid5k] 57/73: improve wallet script |
Date: |
Tue, 14 Dec 2021 15:10:39 +0100 |
This is an automated email from the git hooks/post-receive script.
marco-boss pushed a commit to branch master
in repository grid5k.
commit 92f2f38bdf3ec26bd2735c90603d0e6cf457c6f8
Author: Boss Marco <bossm8@bfh.ch>
AuthorDate: Thu Dec 9 16:47:26 2021 +0100
improve wallet script
---
experiment/env | 4 ++
experiment/scripts/benchmark.sh | 9 ++---
experiment/scripts/database.sh | 19 ++++++----
experiment/scripts/wallet.sh | 81 +++++++++++++++++++++++------------------
4 files changed, 66 insertions(+), 47 deletions(-)
diff --git a/experiment/env b/experiment/env
index 2c9e7dd..096683c 100644
--- a/experiment/env
+++ b/experiment/env
@@ -76,6 +76,10 @@ NUM_EXCHANGE_PROCESSES=1
# This setting is static, default = 1
NUM_WIREWATTCH_PROCESSES=1
+TALER_WALLET_SYNC_CRYPTO=1
+TALER_WALLET_PRIMITIVE_WORKER=1
+TALER_WALLET_INSECURE_TRUST_EXCHANGE=1
+
# If prometheus node exporter should be enabled
# Most certainly this is true, since otherwise no overview
# of services and running wallets can be generated in grafana.
diff --git a/experiment/scripts/benchmark.sh b/experiment/scripts/benchmark.sh
index cf1aad3..5733eac 100755
--- a/experiment/scripts/benchmark.sh
+++ b/experiment/scripts/benchmark.sh
@@ -2,11 +2,10 @@
LOG_LEVEL=ERROR
-case $1 in
- *logging*)
- LOG_LEVEL=INFO
- ;;
-esac
+# Every thenth wallet should log messages
+if ! (($1 % 10)) || [ $1 == "1" ]; then
+ LOG_LEVEL=INFO
+fi
taler-wallet-cli \
-L ${LOG_LEVEL} \
diff --git a/experiment/scripts/database.sh b/experiment/scripts/database.sh
index f0be778..c07517f 100755
--- a/experiment/scripts/database.sh
+++ b/experiment/scripts/database.sh
@@ -36,7 +36,6 @@ function setup_config() {
SHARED_MEM=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 3 ))
CACHE_SIZE=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) * 3/4))
NUM_CPU=$(lscpu | grep "CPU(s)" | head -n 1 | awk '{print $2}')
- NUM_PARALLEL_WORKERS=$((${NUM_CPU} / 2))
# Size for huge_pages =~ shared_buffers * 1.25 so that there is enough
VM_PEAK=$((${SHARED_MEM} * 10/8))
@@ -72,9 +71,14 @@ function setup_config() {
min_wal_size=4GB
max_wal_size=8GB
wal_buffers=16MB
+
+ # Hopefully reduce disk IO
+ # https://www.postgresql.org/docs/12/wal-configuration.html
+ checkpoint_completion_target=0.9
+ random_page_cost=1.1
max_worker_processes=${NUM_CPU}
- max_parallel_workers=${NUM_PARALLEL_WORKERS}
+ max_parallel_workers=${NUM_CPU}
max_connections=500
max_parallel_maintenance_workers=4
@@ -85,7 +89,9 @@ function setup_config() {
# Increase work mem to lower I/O utilization (max used =~ work_mem *
max_connections)
# NOTE: This formula is not completely correct
work_mem=256MB
- # idle_in_transaction_session_timeout=3000
+ maintenance_work_mem=2GB
+ # 2 min
+ idle_in_transaction_session_timeout=120000
" > /etc/postgresql/13/main/exchange.conf
if ! grep -q "include = 'exchange.conf'" \
@@ -124,10 +130,9 @@ psql -tAc "SELECT 1 FROM pg_database WHERE
datname='${DB_NAME}'" | \
createdb -O taler-exchange-httpd "${DB_NAME}"
EOF
-if [[ "$1" == "init" ]];
-then
- sudo -u taler-exchange-httpd taler-exchange-dbinit
-fi
+sudo -u taler-exchange-httpd taler-exchange-dbinit -r || true
+sudo -u taler-exchange-httpd taler-exchange-dbinit -s || true
+sudo -u taler-exchange-httpd taler-exchange-dbinit
su postgres << EOF
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='${DB_USER}'" | \
diff --git a/experiment/scripts/wallet.sh b/experiment/scripts/wallet.sh
index 9bfbe66..aa38e98 100755
--- a/experiment/scripts/wallet.sh
+++ b/experiment/scripts/wallet.sh
@@ -1,53 +1,64 @@
#!/bin/bash
set -eux
-if [[ "$1" == "init" ]];
-then
+NUM_PROCESSES=${NUM_WALLET_PROCESSES:-10}
+
+function init_wallets() {
source ~/scripts/helpers.sh
restart_rsyslog
wait_for_keys "${PROXY_DOMAIN}"
sleep 5
+}
+
+function start_wallets() {
+ CPU_USAGE=$[100-$(vmstat 1 2 | tail -1 | awk '{print $15}')]
+ echo "CPU Usage: ${CPU_USAGE}%"
- NUM_PROCESSES=${NUM_WALLET_PROCESSES:-10}
+ # count the running wallets
+ RUNNING=$(ps -aux | grep "[wallet]-cli" | wc -l)
- if [ "$NUM_PROCESSES" -gt "0" ];
- then
- # Start one process with logging enabled
- let "NUM_PROCESSES-=1" || true
- systemctl restart taler-wallet@logging.service
+ if [ "${CPU_USAGE}" -gt "75" ]; then
+ echo "Not starting any more wallets"
+ exit 1
fi
-else
- NUM_PROCESSES=$2
-fi
-# count the running wallets
-RUNNING=$(ps -aux | grep "[wallet]-cli" | wc -l)
+ for i in $(seq ${1}); do
+ let "i+=${RUNNING}"
+ systemctl restart taler-wallet@${i}.service
+ sleep 0.5
+ done
+}
+
+function stop_wallet() {
+ if [[ "$1" == "all" ]]; then
+ systemctl stop taler-wallet@*.service
+ else
+ # Get all running wallet processes,
+ # extract their number, limit by number of
+ # wallets to stop and stop those
+ N=$(\
+ systemctl status taler-wallet@*.service | \
+ grep -E "taler-wallet@[0-9]+.service -" | \
+ sed 's/[^0-9]*//g' | \
+ sort -n -r | \
+ head -n $1 \
+ )
+ for i in ${N}; do
+ systemctl stop taler-wallet@${i}.service
+ done
+ fi
+}
case "$1" in
+ init)
+ init_wallets
+ start_wallets $NUM_PROCESSES
+ ;;
stop)
- if [[ "${NUM_PROCESSES}" = "logging" ]]; then
- systemctl stop taler-wallet@logging.service
- else
- let "START=${RUNNING}-${NUM_PROCESSES}+1"
- for i in $(seq ${START} ${RUNNING})
- do
- systemctl stop taler-wallet@${i}.service
- done
- fi
+ stop_wallet $2
;;
- start|init)
- CPU_USAGE=$[100-$(vmstat 1 2 | tail -1 | awk '{print $15}')]
- echo "CPU Usage: ${CPU_USAGE}%"
- if [ "${CPU_USAGE}" -gt "75" ];
- then
- echo "Not starting any more wallets"
- exit 1
- fi
- for i in $(seq ${NUM_PROCESSES})
- do
- let "i+=${RUNNING}"
- systemctl restart taler-wallet@${i}.service
- done
+ start)
+ start_wallets $2
;;
esac
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-grid5k] 41/73: update installer script, (continued)
- [taler-grid5k] 41/73: update installer script, gnunet, 2021/12/14
- [taler-grid5k] 54/73: enable huge_pages, implement exchange scrape logic, gnunet, 2021/12/14
- [taler-grid5k] 48/73: update install script, gnunet, 2021/12/14
- [taler-grid5k] 37/73: bootstrap seems to work with sudo, gnunet, 2021/12/14
- [taler-grid5k] 47/73: fix stupid bug and fix arguments for bank, gnunet, 2021/12/14
- [taler-grid5k] 55/73: db disk mount, gnunet, 2021/12/14
- [taler-grid5k] 42/73: fix setup.sh, gnunet, 2021/12/14
- [taler-grid5k] 50/73: note about postgres huge pages, gnunet, 2021/12/14
- [taler-grid5k] 39/73: fix typo, gnunet, 2021/12/14
- [taler-grid5k] 60/73: fix logbackup so it gets rotated correctly, gnunet, 2021/12/14
- [taler-grid5k] 57/73: improve wallet script,
gnunet <=
- [taler-grid5k] 58/73: sanitize scripts, gnunet, 2021/12/14
- [taler-grid5k] 36/73: Update image build, add install script to install taler binaries in running experiment, gnunet, 2021/12/14
- [taler-grid5k] 63/73: fix, gnunet, 2021/12/14
- [taler-grid5k] 46/73: remove previous builds, gnunet, 2021/12/14
- [taler-grid5k] 62/73: fix monitor, gnunet, 2021/12/14
- [taler-grid5k] 49/73: monitor dns too, change db settings, gnunet, 2021/12/14
- [taler-grid5k] 59/73: fix taler-perf.sh, improve other scripts, gnunet, 2021/12/14
- [taler-grid5k] 56/73: fix startup, gnunet, 2021/12/14
- [taler-grid5k] 45/73: take postgres config to seperate file, gnunet, 2021/12/14
- [taler-grid5k] 38/73: speedup image build, gnunet, 2021/12/14