#!/usr/bin/env bash # #(c) 2004-present, Facebook Inc. All rights reserved. # #see LICENSE file for more information on use/redistribution rights. # # #dbench_monitor: monitor db_bench process for violation of memory utilization # #default usage will monitor 'virtual memory size'. See below for standard options #passed to db_bench during this test. # # See also: ./pflag for the actual monitoring script that does the work # #NOTE: # You may end up with some /tmp/ files if db_bench OR # this script OR ./pflag was killed unceremoniously # # If you see the script taking a long time, trying "kill" # will usually cleanly exit. # # DIR=`dirname $0` LOG=/tmp/`basename $0`.$$ DB_BENCH="$DIR/../db_bench"; PFLAG=${DIR}/pflag usage() { cat <<HELP; exit Usage: $0 [-h] -h: prints this help message This program will run the db_bench script to monitor memory usage using the 'pflag' program. It launches db_bench with default settings for certain arguments. You can change the defaults passed to 'db_bench' program, by setting the following environment variables: bs [block_size] ztype [compression_type] benches [benchmarks] reads [reads] threads [threads] cs [cache_size] vsize [value_size] comp [compression_ratio] num [num] See the code for more info HELP } [ ! -x ${DB_BENCH} ] && echo "WARNING: ${DB_BENCH} doesn't exist, abort!" && exit -1; [ "x$1" = "x-h" ] && usage; trap 'rm -f ${LOG}; kill ${PID}; echo "Interrupted, exiting";' 1 2 3 15 touch $LOG; : ${bs:=16384} : ${ztype:=zlib} : ${benches:=readwhilewriting} : ${reads:=$((1*1024*1024))}; : ${threads:=8} : ${vsize:=2000} : ${comp:=0.5} : ${num:=10000} : ${cs:=$((1*1024*1024*1024))}; DEBUG=1 #Set to 0 to remove chattiness if [ "x$DEBUG" != "x" ]; then # #NOTE: under some circumstances, --use_existing_db may leave LOCK files under ${TMPDIR}/rocksdb/* #cleanup the dir and re-run # echo DEBUG: Will run $DB_BENCH --block_size=$bs --compression_type=$ztype --benchmarks="$benches" --reads="$reads" --threads="$threads" --cache_size=$cs --value_size=$vsize --compression_ratio=$comp --num=$num --use_existing_db fi $DB_BENCH --block_size=$bs --compression_type=$ztype --benchmarks="$benches" --reads="$reads" --threads="$threads" --cache_size=$cs --value_size=$vsize --compression_ratio=$comp --num=$num --use_existing_db >$LOG 2>&1 & if [ $? -ne 0 ]; then warn "WARNING: ${DB_BENCH} did not launch successfully! Abort!"; exit; fi PID=$! # #Start the monitoring. Default is "vsz" monitoring for upto cache_size ($cs) value of virtual mem #You could also monitor RSS and CPUTIME (bsdtime). Try 'pflag -h' for how to do this # ${PFLAG} -p $PID -v rm -f $LOG;