#!/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_DSTAT=$(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
    run_process dstat "$TOP_DIR/tools/dstat.sh $LOGDIR"

    # To enable memory_tracker add:
    #    enable_service memory_tracker
    # to your localrc
    run_process memory_tracker "$TOP_DIR/tools/memory_tracker.sh" "" "root"

    # remove support for the old name when it's no longer used (sometime in Queens)
    if is_service_enabled peakmem_tracker; then
        deprecated "Use of peakmem_tracker in devstack is deprecated, use memory_tracker instead"
        run_process peakmem_tracker "$TOP_DIR/tools/memory_tracker.sh" "" "root"
    fi
}

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

# Restore xtrace
$_XTRACE_DSTAT
