summaryrefslogtreecommitdiffstats
path: root/scripts/oe-time-dd-test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/oe-time-dd-test.sh')
-rwxr-xr-xscripts/oe-time-dd-test.sh99
1 files changed, 88 insertions, 11 deletions
diff --git a/scripts/oe-time-dd-test.sh b/scripts/oe-time-dd-test.sh
index 46b218b76a..81748b8c9e 100755
--- a/scripts/oe-time-dd-test.sh
+++ b/scripts/oe-time-dd-test.sh
@@ -1,4 +1,8 @@
-#!/bin/sh
+#!/bin/bash
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
#
# oe-time-dd-test records how much time it takes to
# write <count> number of kilobytes to the filesystem.
@@ -8,22 +12,95 @@
# The purporse of this script is to find which part of
# the build system puts stress on the filesystem io and
# log all the processes.
-
usage() {
- echo "Usage: $0 <count>"
+ echo "$0 is used to detect i/o latency and runs commands to display host information."
+ echo "The following commands are run in order:"
+ echo "1) top -c -b -n1 -w 512"
+ echo "2) iostat -y -z -x 5 1"
+ echo "3) tail -30 tmp*/log/cooker/*/console-latest.log to gather cooker log."
+ echo " "
+ echo "Options:"
+ echo "-c | --count <amount> dd (transfer) <amount> KiB of data within specified timeout to detect latency."
+ echo " Must enable -t option."
+ echo "-t | --timeout <time> timeout in seconds for the <count> amount of data to be transferred."
+ echo "-l | --log-only run the commands without performing the data transfer."
+ echo "-h | --help show help"
+
}
-TIMEOUT=15
+run_cmds() {
+ echo "start: top output"
+ top -c -b -n1 -w 512
+ echo "end: top output"
+ echo "start: iostat"
+ iostat -y -z -x 5 1
+ echo "end: iostat"
+ echo "start: cooker log"
+ tail -30 tmp*/log/cooker/*/console-latest.log
+ echo "end: cooker log"
+}
-if [ $# -ne 1 ]; then
- usage
- exit 1
+if [ $# -lt 1 ]; then
+ usage
+ exit 1
+fi
+
+re_c='^[0-9]+$'
+#re_t='^[0-9]+([.][0-9]+)?$'
+
+while [[ $# -gt 0 ]]; do
+ key="$1"
+
+ case $key in
+ -c|--count)
+ COUNT=$2
+ shift
+ shift
+ if ! [[ $COUNT =~ $re_c ]] || [[ $COUNT -le 0 ]] ; then
+ usage
+ exit 1
+ fi
+ ;;
+ -t|--timeout)
+ TIMEOUT=$2
+ shift
+ shift
+ if ! [[ $TIMEOUT =~ $re_c ]] || [[ $TIMEOUT -le 0 ]] ; then
+ usage
+ exit 1
+ fi
+ ;;
+ -l|--log-only)
+ LOG_ONLY="true"
+ shift
+ shift
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+
+if [ "$LOG_ONLY" = "true" ] ; then
+ uptime
+ run_cmds
+ exit
+fi
+
+if [ -z ${TIMEOUT+x} ] || [ -z ${COUNT+x} ] ; then
+ usage
+ exit 1
fi
uptime
-timeout ${TIMEOUT} dd if=/dev/zero of=oe-time-dd-test.dat bs=1024 count=$1 conv=fsync
+echo "Timeout used: ${TIMEOUT}"
+timeout ${TIMEOUT} dd if=/dev/zero of=oe-time-dd-test.dat bs=1024 count=${COUNT} conv=fsync
if [ $? -ne 0 ]; then
- echo "Timeout used: ${TIMEOUT}"
- top -c -b -n1 -w 512
- tail -30 tmp*/log/cooker/*/console-latest.log
+ run_cmds
fi