aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/zpios-profile/zpios-profile-post.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/zpios-profile/zpios-profile-post.sh')
-rwxr-xr-xscripts/zpios-profile/zpios-profile-post.sh129
1 files changed, 129 insertions, 0 deletions
diff --git a/scripts/zpios-profile/zpios-profile-post.sh b/scripts/zpios-profile/zpios-profile-post.sh
new file mode 100755
index 000000000..3a454ba04
--- /dev/null
+++ b/scripts/zpios-profile/zpios-profile-post.sh
@@ -0,0 +1,129 @@
+#!/bin/bash
+
+PROG=zpios-profile-post.sh
+
+RUN_POST=${0}
+RUN_PHASE=${1}
+RUN_DIR=${2}
+RUN_ID=${3}
+RUN_POOL=${4}
+RUN_CHUNK_SIZE=${5}
+RUN_REGION_SIZE=${6}
+RUN_THRD_COUNT=${7}
+RUN_REGION_COUNT=${8}
+RUN_OFFSET=${9}
+RUN_REGION_NOISE=${10}
+RUN_CHUNK_NOISE=${11}
+RUN_THRD_DELAY=${12}
+RUN_FLAGS=${13}
+RUN_RESULT=${14}
+
+# Summarize system time per process
+zpios_profile_post_pids() {
+ ${PROFILE_PIDS} ${PROFILE_RUN_CR_PIDS_LOG} >${PROFILE_RUN_CR_PIDS_CSV}
+ ${PROFILE_PIDS} ${PROFILE_RUN_WR_PIDS_LOG} >${PROFILE_RUN_WR_PIDS_CSV}
+ ${PROFILE_PIDS} ${PROFILE_RUN_RD_PIDS_LOG} >${PROFILE_RUN_RD_PIDS_CSV}
+ ${PROFILE_PIDS} ${PROFILE_RUN_RM_PIDS_LOG} >${PROFILE_RUN_RM_PIDS_CSV}
+}
+
+zpios_profile_post_disk() {
+ ${PROFILE_DISK} ${PROFILE_RUN_CR_DISK_LOG} >${PROFILE_RUN_CR_DISK_CSV}
+ ${PROFILE_DISK} ${PROFILE_RUN_WR_DISK_LOG} >${PROFILE_RUN_WR_DISK_CSV}
+ ${PROFILE_DISK} ${PROFILE_RUN_RD_DISK_LOG} >${PROFILE_RUN_RD_DISK_CSV}
+ ${PROFILE_DISK} ${PROFILE_RUN_RM_DISK_LOG} >${PROFILE_RUN_RM_DISK_CSV}
+}
+
+# Summarize per device performance
+
+# Stop a user defined profiling script which is gathering additional data
+zpios_profile_post_stop() {
+ local PROFILE_PID=$1
+
+ kill -s SIGHUP `cat ${PROFILE_PID}`
+
+
+ # Sleep waiting for profile script to exit
+ while [ -f ${PROFILE_PID} ]; do
+ sleep 0.01
+ done
+}
+
+zpios_profile_post_proc_stop() {
+ local PROC_DIR=$1
+
+ if [ -f ${PROFILE_ARC_PROC} ]; then
+ cat ${PROFILE_ARC_PROC} >${PROC_DIR}/arcstats.txt
+ fi
+
+ if [ -f ${PROFILE_VDEV_CACHE_PROC} ]; then
+ cat ${PROFILE_VDEV_CACHE_PROC} >${PROC_DIR}/vdev_cache_stats.txt
+ fi
+}
+
+zpios_profile_post_oprofile_stop() {
+ local OPROFILE_LOG=$1
+ local OPROFILE_ARGS="-a -g -l -p ${OPROFILE_KERNEL_DIR},${OPROFILE_SPL_DIR},${OPROFILE_ZFS_DIR}"
+
+ /usr/bin/opcontrol --stop >>${OPROFILE_LOG} 2>&1
+ /usr/bin/opcontrol --dump >>${OPROFILE_LOG} 2>&1
+ /usr/bin/opreport ${OPROFILE_ARGS} >${OPROFILE_LOG} 2>&1
+ /usr/bin/oparchive
+}
+
+zpios_profile_post_create() {
+ zpios_profile_post_oprofile_stop ${PROFILE_RUN_CR_OPROFILE_LOG}
+ zpios_profile_post_proc_stop ${PROFILE_RUN_CR_DIR}
+ zpios_profile_post_stop ${PROFILE_RUN_CR_PID}
+}
+
+zpios_profile_post_write() {
+ zpios_profile_post_oprofile_stop ${PROFILE_RUN_WR_OPROFILE_LOG}
+ zpios_profile_post_proc_stop ${PROFILE_RUN_WR_DIR}
+ zpios_profile_post_stop ${PROFILE_RUN_WR_PID}
+}
+
+zpios_profile_post_read() {
+ zpios_profile_post_oprofile_stop ${PROFILE_RUN_CR_RD_LOG}
+ zpios_profile_post_proc_stop ${PROFILE_RUN_RD_DIR}
+ zpios_profile_post_stop ${PROFILE_RUN_RD_PID}
+}
+
+zpios_profile_post_remove() {
+ zpios_profile_post_oprofile_stop ${PROFILE_RUN_RM_OPROFILE_LOG}
+ zpios_profile_post_proc_stop ${PROFILE_RUN_RM_DIR}
+ zpios_profile_post_stop ${PROFILE_RUN_RM_PID}
+}
+
+# Source global zpios test configuration
+if [ -f ${RUN_DIR}/zpios-config.sh ]; then
+ . ${RUN_DIR}/zpios-config.sh
+fi
+
+# Source global per-run test configuration
+if [ -f ${RUN_DIR}/${RUN_ID}/zpios-config-run.sh ]; then
+ . ${RUN_DIR}/${RUN_ID}/zpios-config-run.sh
+fi
+
+case "${RUN_PHASE}" in
+ post-run)
+ zpios_profile_post_pids
+ zpios_profile_post_disk
+ ;;
+ post-create)
+ zpios_profile_post_create
+ ;;
+ post-write)
+ zpios_profile_post_write
+ ;;
+ post-read)
+ zpios_profile_post_read
+ ;;
+ post-remove)
+ zpios_profile_post_remove
+ ;;
+ *)
+ echo "Usage: ${PROG} {post-run|post-create|post-write|post-read|post-remove}"
+ exit 1
+esac
+
+exit 0