#!/bin/bash
#
# 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

# 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 --top-io-adv"
    run_process dstat "dstat $DSTAT_OPTS"
}

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

# Restore xtrace
$XTRACE
