Skip to content

Instantly share code, notes, and snippets.

@tabokie
Last active April 15, 2021 09:50
Show Gist options
  • Save tabokie/3205ba84de87aeb957056de6e71427f7 to your computer and use it in GitHub Desktop.
Save tabokie/3205ba84de87aeb957056de6e71427f7 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Usage: analyze_database.sh <IP> <PORT> <DATABASE>
for table in $(mysql -u root -h ${1} -P ${2} -D ${3} -Bse "show tables"); do
echo "analyze table" $table;
mysql -u root -h ${1} -P ${2} -D ${3} -Bse "analyze table $table";
sleep 1;
done
# usage watch -n 0 ./diagnoser.sh
set -ueo pipefail
echo "--> dirty page too much?"
sudo grep nr_dirty /proc/vmstat
echo "--> memory reclaim"
sudo cat /sys/kernel/debug/extfrag/extfrag_index
sudo cat /sys/kernel/debug/extfrag/unusable_index
echo "--> sar"
sudo sar -r 0
sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 2 | awk '/sys_enter_read|sys_enter_write/'
#!/bin/bash
# usage: flame.sh NAME SEC
set -eo pipefail
NAME=$1
if [ -z "$1" ]; then
NAME="out"
fi
SECONDS=$2
if [ -z "$2" ]; then
SECONDS=60
fi
./install.sh perf
./install.sh perl
if [ ! -e stackcollapse-perf.pl ]; then
wget https://raw.githubusercontent.com/brendangregg/FlameGraph/master/stackcollapse-perf.pl
chmod 755 stackcollapse-perf.pl
fi
if [ ! -e flamegraph.pl ]; then
wget https://raw.githubusercontent.com/brendangregg/FlameGraph/master/flamegraph.pl
chmod 755 flamegraph.pl
fi
sudo perf record -F 99 -a -g -- sleep $SECONDS
sudo perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > ${NAME}.svg
#!/bin/bash
# usage: install centos-name [ubuntu-name]
CENTOS_NAME=$1
if [ -z "$2" ]; then
UBUNTU_NAME=$1
else
UBUNTU_NAME=$2
fi
sudo apt-get -v &> /dev/null && sudo apt-get update && sudo apt-get install -y $CENTOS_NAME
which yum &> /dev/null && sudo yum install -y $UBUNTU_NAME
# for Centos
sudo yum install -y epel-release
sudo yum update -y
sudo yum groupinstall -y "Development tools"
sudo yum install -y elfutils-libelf-devel cmake3 git bison flex ncurses-devel
sudo yum install -y luajit luajit-devel # for Lua support
sudo yum install -y centos-release-scl
sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
sudo yum install -y devtoolset-7 llvm-toolset-7 llvm-toolset-7-llvm-devel llvm-toolset-7-llvm-static llvm-toolset-7-clang-devel
source scl_source enable devtoolset-7 llvm-toolset-7
echo "source scl_source enable devtoolset-7 llvm-toolset-7" >> ~/.bash_profile
mkdir -p tmp && cd tmp
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake3 ..
make -j4
sudo make install
# usage: mount.sh nvme1n1 /data
set -ueo pipefail
DEVICE=/dev/$1
MNT=$2
sudo parted -s -a optimal $DEVICE mklabel gpt -- mkpart primary ext4 1 -1
if [[ $DEVICE == *"nvme"* ]]; then
PARTITION=${DEVICE}p1
else
PARTITION=${DEVICE}1
fi
sleep 1
sudo mkfs.ext4 $PARTITION
sudo mkdir -p $MNT
sudo mount -t ext4 $PARTITION $MNT -o defaults,barrier,nodelalloc,nodiratime,noatime
#!/bin/bash
# Usage: SSH_FLAGS="-i key.pem" prepare_dir.sh <USER>@<ADDR>
set -eo pipefail
ADDR="$1"
USER_NAME="$(echo $ADDR | grep @ | cut -d@ -f1)"
echo "lsblk on ${ADDR}:"
ssh ${SSH_FLAGS} ${ADDR} "lsblk"
echo "Enter commands (type in help to see available ones):"
while read -a params && [ "${params[0]}" != "exit" ]; do
case "${params[0]}"
in
mount)
# mount device mount_point
ssh ${SSH_FLAGS} ${ADDR} "~/mount.sh ${params[1]} ${params[2]} && sudo \
chown -R ${USER_NAME}:${USER_NAME} ${params[2]}"
;;
link)
# link target name
ssh ${SSH_FLAGS} ${ADDR} "sudo rm -rf ${params[2]} \
&& sudo ln -s ${params[1]} ${params[2]} \
&& sudo chown -R ${USER_NAME}:${USER_NAME} ${params[2]}"
;;
mkdir)
# mkdir name
ssh ${SSH_FLAGS} ${ADDR} "sudo mkdir -p ${params[1]} && sudo chown -R \
${USER_NAME}:${USER_NAME} ${params[1]}"
;;
help)
echo " Available commands:"
echo " mount sda /data"
echo " link /data /symbolic_dir"
echo " mkdir /new_dir"
;;
esac
done
# usage: raid.sh "nvme1n1 nvme2n1" /data
set -ueo pipefail
DEVICES=""
NUM_DEVICES=0
for i in $1; do
DEVICES="${DEVICES} /dev/${i}"
NUM_DEVICES=$((NUM_DEVICES + 1))
done
MNT=$2
sudo mkdir -p $MNT
sudo mdadm --create --verbose /dev/md0 --level=0 --name=myraid --raid-devices=${NUM_DEVICES} ${DEVICES}
sleep 2
sudo cat /proc/mdstat
sudo mkfs.ext4 /dev/md0 -L myraid
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
sudo mount -t ext4 LABEL=myraid $MNT -o defaults,barrier,nodelalloc,nodiratime,noatime
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment