|  | #!/bin/bash | 
|  | # | 
|  | # lib/dstat | 
|  | # Functions to start and stop dstat | 
|  |  | 
|  | # Dependencies: | 
|  | # | 
|  | # - ``functions`` file | 
|  |  | 
|  | # ``stack.sh`` calls the entry points in this order: | 
|  | # | 
|  | # - install_dstat | 
|  | # - start_dstat | 
|  | # - stop_dstat | 
|  |  | 
|  | # Save trace setting | 
|  | _XTRACE_DSTAT=$(set +o | grep xtrace) | 
|  | set +o xtrace | 
|  |  | 
|  | # install_dstat() - Install prerequisites for dstat services | 
|  | function install_dstat { | 
|  | if is_service_enabled memory_tracker; then | 
|  | # Install python libraries required by tools/mlock_report.py | 
|  | pip_install_gr psutil | 
|  | fi | 
|  | } | 
|  |  | 
|  | # start_dstat() - Start running processes | 
|  | 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" | 
|  |  | 
|  | # TODO(jh): Fail when using the old service name otherwise consumers might | 
|  | # never notice that is has been removed. | 
|  | if is_service_enabled peakmem_tracker; then | 
|  | die $LINENO "The peakmem_tracker service has been removed, use memory_tracker instead" | 
|  | fi | 
|  |  | 
|  | # To enable file_tracker add: | 
|  | #    enable_service file_tracker | 
|  | # to your localrc | 
|  | run_process file_tracker "$TOP_DIR/tools/file_tracker.sh" | 
|  | } | 
|  |  | 
|  | # stop_dstat() stop dstat process | 
|  | function stop_dstat { | 
|  | stop_process dstat | 
|  | stop_process memory_tracker | 
|  | stop_process file_tracker | 
|  | } | 
|  |  | 
|  | # Restore xtrace | 
|  | $_XTRACE_DSTAT |