### waits.sql
\o /tmp/waits
select 'OUT', COALESCE(wait_event, 'CPU') wait from  pg_stat_activity where state = 'active';
\watch 1



### pgbench
CONNECTIONS=192
pgbench -i -s500

rm -rfv /tmp/results
for i in 1 .75 .5 .25 0
do
  psql -c "alter system set pg_stat_statements.sample_rate = ${i};" 2>/dev/null >/dev/null
  psql -c "select pg_reload_conf();" 2>/dev/null >/dev/null
  psql -c "show pg_stat_statements.sample_rate;" 2>/dev/null >/dev/null
  echo -e "\nsample_rate = $i" >>/tmp/results
  nohup pgbench -c${CONNECTIONS} -j20 -S -Mprepared -T120 --progress 10 | grep "tps = " 2>>/tmp/results >>/tmp/results &
  timeout 125 psql -f /tmp/waits.sql
  echo "waits" >>/tmp/results
  echo "-----" >>/tmp/results
  cat /tmp/waits | grep OUT | awk '{print $2}' FS="|" | sort | uniq -c | sort -n -r -k1 >>/tmp/results
  rm -rfv /tmp/waits
  rm -rfv /tmp/out
done