From 6e6d01de21c2d8d059fcb30076dc123aa8046ad4 Mon Sep 17 00:00:00 2001 From: David Valin Date: Thu, 14 Nov 2024 11:26:09 -0500 Subject: [PATCH 1/3] Prototype for adding pcp to wrappers --- general_setup | 8 +++++ pcp_start | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++ pcp_stop | 19 ++++++++++++ save_results | 9 ++++++ 4 files changed, 118 insertions(+) create mode 100755 pcp_start create mode 100644 pcp_stop diff --git a/general_setup b/general_setup index 007db94..38cf977 100755 --- a/general_setup +++ b/general_setup @@ -45,6 +45,8 @@ source ~/.bashrc # # Present usage information. # +to_pcp=1 +to_pcp_args="" gs_usage_info() @@ -149,6 +151,11 @@ do to_puser=$value shift 2 ;; + --pcp) + i=$((i + 2)) + to_pcp=$value + shift 2 + ;; --run_label) i=$((i + 2)) to_run_label=$value @@ -199,4 +206,5 @@ fi if [ $to_times_to_run -eq 0 ]; then to_times_to_run=$iteration_default fi + set $gen_args_back diff --git a/pcp_start b/pcp_start new file mode 100755 index 0000000..5012c2e --- /dev/null +++ b/pcp_start @@ -0,0 +1,82 @@ +#!/bin/bash + +pcp_install() +{ + # + # Make sure PCP is installed. + # + if [ $to_pcp -eq 1 ]; then + # + # Make sure pcp is installed. + # We will have to handle different OS's eventually. + # For some reason we can not use pcp-zerconf itself. + echo here + dnf list installed pcp-zeroconf.x86_64 &> /dev/null + if [ $? -ne 0 ]; then + echo here 1 + dnf install -y pcp-zeroconf.x86_64 + fi + fi +} + +pcp_verify() +{ + cfg_file="$1" + + # Verify PMCD is running (pcp-zeroconf is installed) + pgrep pmcd > /dev/null + if [ $? != 0 ]; then + echo "PCP pmcd is not running. Is PCP installed?" + echo "Suggested syntax: sudo dnf install pcp-zeroconf" + exit 2 + fi + + # Verify primary pmlogger is not running + pgrep pmlogger > /dev/null + if [ $? == 0 ]; then + echo "Primary PCP pmlogger is running. Stopping it." + sudo systemctl stop pmlogger + fi + + # Verify user provided pmlogger.conf file exists + if [ ! -f "$cfg_file" ]; then + echo "File $cfg_file not found!" + exit 2 + fi +} + +pcp_start() +{ + echo "PCP Start" + + cfg_file="$1" + pcp_archive_dir="$2" + pcp_archive_name="$3" + + mkdir -p ${pcp_archive_dir} + +# Run PCP logger +# JTH - VERIFY success, ensure pmlogger starts + pmlogger -c ${cfg_file} -t 1 -l "${pcp_archive_dir}/pmlogger.log" "${pcp_archive_name}" & + + # Sleep 3 seconds prior to starting workload + sleep 3 + + # JTH - VERIFY success, ensure pmlogger starts + pgrep pmlogger > /dev/null + if [ $? != 0 ]; then + echo "FAILED to Start PCP pmlogger. Aborting test." + exit 2 + fi +} + +DATE=$(date -u +"%Y%m%dT%H%M%S") +ARCHIVE_DIR=$curdir/"ARCHIVE.${DATE}" +PCPARCHIVE_NAME="$ARCHIVE_DIR/coremark_archive" +to_pcp_args="--mv_dir $ARCHIVE_DIR" + +CONF_FILE="/var/lib/pcp/config/pmlogger/config.default" + +pcp_install +pcp_verify $CONF_FILE +pcp_start $CONF_FILE $ARCHIVE_DIR $PCPARCHIVE_NAME diff --git a/pcp_stop b/pcp_stop new file mode 100644 index 0000000..7ac3c23 --- /dev/null +++ b/pcp_stop @@ -0,0 +1,19 @@ +#!/bin/bash +pcp_stop() +{ + echo "PCP Stop" + +# Sleep 3 seconds to have system calm down + sleep 3 + +# Stop PCP logger and pause for pmlogger to write archive + pkill -USR1 pmlogger + sleep 3 + +# JTH - VERIFY success, ensure pmlogger stops + pid=$(pgrep pmlogger) + if [ $? == 0 ]; then + echo "FAILED to Stop PCP pmlogger. PID $pid should be manually stopped" + fi +} + diff --git a/save_results b/save_results index 4c3b569..8efbf07 100755 --- a/save_results +++ b/save_results @@ -25,6 +25,7 @@ curdir="" home_root="" other_files="" copy_dir="" +mv_dir="" results="" tar_file="" test_name="" @@ -66,6 +67,7 @@ ARGUMENT_LIST=( "copy_dir" "curdir" "home_root" + "mv_dir" "other_files" "results" "tar_file" @@ -107,6 +109,10 @@ while [[ $# -gt 0 ]]; do home_root=$2 shift 2 ;; + --mv_dir) + mv_dir=$2 + shift 2 + ;; --other_files) other_files=$2 shift 2 @@ -184,6 +190,9 @@ fi if [[ $copy_dir != "" ]]; then cp -R $copy_dir $RESULTS_PATH fi +if [[ $mv_dir != "" ]]; then + mv $mv_dir $RESULTS_PATH +fi if [[ $version == "" ]]; then echo tag: No version provided > $RESULTS_PATH/version else From ec20cccd8f1f5c2520e6b8e44a711e5488c92494 Mon Sep 17 00:00:00 2001 From: David Valin Date: Thu, 14 Nov 2024 11:50:13 -0500 Subject: [PATCH 2/3] Add option to not run pcp. --- pcp_start | 8 +++++--- pcp_stop | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pcp_start b/pcp_start index 5012c2e..917947f 100755 --- a/pcp_start +++ b/pcp_start @@ -77,6 +77,8 @@ to_pcp_args="--mv_dir $ARCHIVE_DIR" CONF_FILE="/var/lib/pcp/config/pmlogger/config.default" -pcp_install -pcp_verify $CONF_FILE -pcp_start $CONF_FILE $ARCHIVE_DIR $PCPARCHIVE_NAME +if [ $to_pcp -eq 1 ]; then + pcp_install + pcp_verify $CONF_FILE + pcp_start $CONF_FILE $ARCHIVE_DIR $PCPARCHIVE_NAME +fi diff --git a/pcp_stop b/pcp_stop index 7ac3c23..557345f 100644 --- a/pcp_stop +++ b/pcp_stop @@ -17,3 +17,6 @@ pcp_stop() fi } +$if [ $to_pcp -eq 1 ]; then + pcp_stop +fi From 834431a9cb895daeeb1f4e911b8229e7e726c60e Mon Sep 17 00:00:00 2001 From: David Valin Date: Thu, 14 Nov 2024 11:50:57 -0500 Subject: [PATCH 3/3] Do not set mv arg unless we are running pcp --- pcp_start | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcp_start b/pcp_start index 917947f..96a74a4 100755 --- a/pcp_start +++ b/pcp_start @@ -73,11 +73,11 @@ pcp_start() DATE=$(date -u +"%Y%m%dT%H%M%S") ARCHIVE_DIR=$curdir/"ARCHIVE.${DATE}" PCPARCHIVE_NAME="$ARCHIVE_DIR/coremark_archive" -to_pcp_args="--mv_dir $ARCHIVE_DIR" CONF_FILE="/var/lib/pcp/config/pmlogger/config.default" if [ $to_pcp -eq 1 ]; then + to_pcp_args="--mv_dir $ARCHIVE_DIR" pcp_install pcp_verify $CONF_FILE pcp_start $CONF_FILE $ARCHIVE_DIR $PCPARCHIVE_NAME