| #!/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 |
| |
| |
| # Defaults |
| # -------- |
| # for DSTAT logging |
| DSTAT_FILE=${DSTAT_FILE:-"dstat.log"} |
| |
| |
| # 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" |
| if [[ -n ${LOGDIR} ]]; then |
| screen_it dstat "cd $TOP_DIR; dstat $DSTAT_OPTS | tee $LOGDIR/$DSTAT_FILE" |
| if [[ -n ${SCREEN_LOGDIR} && ${SCREEN_LOGDIR} != ${LOGDIR} ]]; then |
| # Drop the backward-compat symlink |
| ln -sf $LOGDIR/$DSTAT_FILE ${SCREEN_LOGDIR}/$DSTAT_FILE |
| fi |
| else |
| screen_it dstat "dstat $DSTAT_OPTS" |
| fi |
| } |
| |
| # stop_dstat() stop dstat process |
| function stop_dstat { |
| # dstat runs as a console, not as a service, and isn't trackable |
| # via the normal mechanisms for devstack. So lets just do a |
| # killall and move on. |
| killall dstat || /bin/true |
| } |
| |
| # Restore xtrace |
| $XTRACE |