| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | #!/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}/pflagusage() {    cat <<HELP; exitUsage: $0  [-h]-h: prints this help messageThis program will run the db_bench script to monitor memory usageusing the 'pflag' program. It launches db_bench with default settingsfor 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 infoHELP}[ ! -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 15touch $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;fiPID=$!##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 -vrm -f $LOG;
 |