Browse code

Merge "Enable CSV logging output for DStat."

Jenkins authored on 2015/10/08 08:11:57
Showing 2 changed files
... ...
@@ -19,8 +19,7 @@ set +o xtrace
19 19
 # start_dstat() - Start running processes, including screen
20 20
 function start_dstat {
21 21
     # A better kind of sysstat, with the top process per time slice
22
-    DSTAT_OPTS="-tcmndrylpg --top-cpu-adv --top-io-adv"
23
-    run_process dstat "dstat $DSTAT_OPTS"
22
+    run_process dstat "$TOP_DIR/tools/dstat.sh $LOGDIR"
24 23
 
25 24
     # To enable peakmem_tracker add:
26 25
     #    enable_service peakmem_tracker
27 26
new file mode 100755
... ...
@@ -0,0 +1,32 @@
0
+#!/bin/bash
1
+
2
+# **tools/dstat.sh** - Execute instances of DStat to log system load info
3
+#
4
+# Multiple instances of DStat are executed in order to take advantage of
5
+# incompatible features, particularly CSV output and the "top-cpu-adv" and
6
+# "top-io-adv" flags.
7
+#
8
+# Assumes:
9
+#  - dstat command is installed
10
+
11
+# Retreive log directory as argument from calling script.
12
+LOGDIR=$1
13
+
14
+# Command line arguments for primary DStat process.
15
+DSTAT_OPTS="-tcmndrylpg --top-cpu-adv --top-io-adv"
16
+
17
+# Command-line arguments for secondary background DStat process.
18
+DSTAT_CSV_OPTS="-tcmndrylpg --output $LOGDIR/dstat-csv.log"
19
+
20
+# Execute and background the secondary dstat process and discard its output.
21
+dstat $DSTAT_CSV_OPTS >& /dev/null &
22
+
23
+# Execute and background the primary dstat process, but keep its output in this
24
+# TTY.
25
+dstat $DSTAT_OPTS &
26
+
27
+# Catch any exit signals, making sure to also terminate any child processes.
28
+trap "kill -- -$$" EXIT
29
+
30
+# Keep this script running as long as child dstat processes are alive.
31
+wait