Skip to content

Instantly share code, notes, and snippets.

@paralin
Last active March 8, 2021 16:49
Show Gist options
  • Select an option

  • Save paralin/c5dcafad3a7ece340ffd8e8166e84bdc to your computer and use it in GitHub Desktop.

Select an option

Save paralin/c5dcafad3a7ece340ffd8e8166e84bdc to your computer and use it in GitHub Desktop.
Benchmark used for SkiffOS report
#!/bin/bash
set -eo pipefail
set -x
MTPT=$(pwd)/bench-mtpt
if [ ! -d $MTPT ]; then
mkdir $MTPT
fi
if mountpoint -q $MTPT; then
sudo umount $MTPT
fi
# disable swap
sudo swapoff /mnt/persist/primary.swap || true
sudo systemctl stop redis || true
# mount ramdisk
sudo mount -t tmpfs -o size=1024M tmpfs $MTPT
sudo chown -R $(whoami) $MTPT
# unmount on shutdown
REDISPID=""
PGPID=""
function cleanup {
set +e
cd ..
kill ${REDISPID} || true
kill ${PGPID} || true
sync || true
sudo umount $MTPT
sleep 1
sudo umount $MTPT
sleep 1
rmdir $MTPT
}
trap cleanup EXIT
STRESS_TMP=$MTPT/stress-tmp
mkdir -p ${STRESS_TMP}
pushd ${STRESS_TMP}
echo "7zip"
P7ZIP=/usr/bin/7zr
if [ ! -f $P7ZIP ]; then
P7ZIP=7z
fi
$P7ZIP b
echo "Cooldown"
sleep 18
echo "aes256"
openssl speed -evp aes-256-cbc -bytes 8192
echo "Cooldown"
sleep 18
echo "Postgres init"
PGDATA=$MTPT/pg-data
PGRUN=$MTPT/pg-run
DATA_DIR=$PGDATA
PATH=$PATH:/usr/lib/postgresql/12/bin
initdb -U $(whoami) -D $PGDATA
echo "Running postgres"
mkdir -p $PGRUN
postgres -D $PGDATA --unix_socket_directories=$PGRUN &
PGPID=$!
sleep 4
echo "Postgres pgbench init"
PGTMP=$MTPT/pg-tmp
mkdir -p $PGTMP
pushd $PGTMP
createdb --host=$PGRUN
sleep 1
pgbench --host=$PGRUN -i -s20 || true
echo "Cooldown..."
sleep 20
echo "Postgres pgbench test"
pgbench --host=$PGRUN -M extended -t2000 -c$(nproc) -j$(nproc) || true
sleep 20
echo "Postgres complete"
kill -9 $PGPID
popd
rm -rf ${PGDATA} ${PGRUN}
echo "Cooldown..."
sleep 30
echo "Redis init..."
mkdir -p ${PGDATA} ${PGRUN}
pushd ${PGDATA}
redis-server --save "" --appendonly no --unixsocket ${PGRUN}/redis.sock &
REDISPID=$!
sleep 5
echo "Redis benchmark..."
sudo redis-benchmark -q -s ${PGRUN}/redis.sock -d 2048 -t LRANGE_500 -n 1000
kill ${REDISPID}
popd
sleep 5
rm -rf ${PGDATA} ${PGRUN}
popd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment