# lib/dstat
# Functions to start and stop dstat

# Dependencies:
#
# - ``functions`` file

# ``stack.sh`` calls the entry points in this order:
#
# - start_dstat
# - stop_dstat

# Save trace setting
XTRACE=$(set +o | grep xtrace)
set +o xtrace


# Defaults
# --------
# for DSTAT logging
DSTAT_FILE=${DSTAT_FILE:-"dstat.txt"}


# start_dstat() - Start running processes, including screen
function start_dstat {
    # A better kind of sysstat, with the top process per time slice
    DSTAT_OPTS="-tcmndrylpg --top-cpu-adv"
    if [[ -n ${SCREEN_LOGDIR} ]]; then
        screen_it dstat "cd $TOP_DIR; dstat $DSTAT_OPTS | tee $SCREEN_LOGDIR/$DSTAT_FILE"
    else
        screen_it dstat "dstat $DSTAT_OPTS"
    fi
}

# stop_dstat() stop dstat process
function stop_dstat {
    screen_stop dstat
}

# Restore xtrace
$XTRACE
