From 2dd270b9b0ad45ecda55d0f602d078479e932f38 Mon Sep 17 00:00:00 2001 From: PrincessPi3 Date: Tue, 4 Nov 2025 09:53:45 -0700 Subject: [PATCH] dat silly measure_performance command almost workan --- customscripts/cmdlist.csv | 6 ++ customscripts/cmdlist.txt | 6 ++ customscripts/measure_performance | 99 ++++++++++++++++++++++--------- 3 files changed, 84 insertions(+), 27 deletions(-) create mode 100644 customscripts/cmdlist.csv create mode 100644 customscripts/cmdlist.txt diff --git a/customscripts/cmdlist.csv b/customscripts/cmdlist.csv new file mode 100644 index 0000000..e0192b3 --- /dev/null +++ b/customscripts/cmdlist.csv @@ -0,0 +1,6 @@ +Position,CPU %,Memory (KiB),Memory %,KiB Read/Second,KiB Written/Second,Duration Microseconds,Command,Return Code,Seconds Elapsed +1/5,0,1728,0.01,0,0,10008736,sleep10,0,10 +2/5,1.07857,8173.71,0.0528571,0,36700,25850195,wgethttps://github.com/espressif/esp-idf/releases/download/v5.5.1/esp-idf-v5.5.1.zip-P/tmp/file.tmp,0,36 +3/5,2.38769,33324,0.204615,0.0615385,19762.5,26261108,oniuxcurl-shttps://canhazip.com,0,62 +4/5,2.87053,37945.1,0.232105,-0.0105263,13522.1,25054283,oniuxcurl-shttps://canhazip.com,0,88 +5/5,3.1292,43786.4,0.268,-0.008,10277.3,25753552,oniuxcurl-shttps://canhazip.com,0,113 diff --git a/customscripts/cmdlist.txt b/customscripts/cmdlist.txt new file mode 100644 index 0000000..6a8656c --- /dev/null +++ b/customscripts/cmdlist.txt @@ -0,0 +1,6 @@ +sleep 10 +wget https://github.com/espressif/esp-idf/releases/download/v5.5.1/esp-idf-v5.5.1.zip -P /tmp/file.tmp +oniux curl -s https://canhazip.com +oniux curl -s https://canhazip.com +oniux curl -s https://canhazip.com +rm -f /tmp/file.tmp \ No newline at end of file diff --git a/customscripts/measure_performance b/customscripts/measure_performance index aaeadd3..7f317b6 100644 --- a/customscripts/measure_performance +++ b/customscripts/measure_performance @@ -5,14 +5,20 @@ ## measure_performance "my_command -with -args" # todo: calculate human readable sizes for mem, r and w -# todo: loop through list of commands supplied by a file -## output da actual log for dis one ig lmao idk +# todo: batch mode +## loop through list of commands supplied by a file +## output da actual log for dis one ig lmao idk +### log results to a file named after the input file +### log format csv with titles -cmd="$@" # da command as a string or as args -start_date=$(date) -start_unixseconds=$(date +%s) -poll_seconds=2 -logfile=/tmp/sillylog.csv +# glooboos +poll_seconds=5 +logfile=/tmp/sillylog.tmp # can beee a temp fiel +input="$@" # da command as a string or as args +duration_microseconds=0 +duration_seconds=0 +test_cmd="" +start_seconds=$(date +%s) # throw a fit if no args supplied if [ -z "$1" ]; then @@ -20,23 +26,62 @@ if [ -z "$1" ]; then exit 1 fi -echo "testing your gay little command $cmd" -# start times -start_unixmicroseconds=$(date +"%s%6N") # get start microseconds fast as possible before run -# run the command with pidstat monitoring it, using eval to handle strings and args methods -eval "pidstat -h -H -d -r -u -I $poll_seconds -e $cmd >> \"$logfile\"" -# get exit code -ret=$? -# end times -## microseconds -end_unixmicroseconds=$(date +"%s%6N") # get dis fast for accuracy -duration_microseconds=$(($end_unixmicroseconds - $start_unixmicroseconds)) -## seconds -duration_seconds=$(($duration_microseconds / 1000000)) # seconds = microseconds / 1,000,000 -# parse da fiel -## remove lines starting with # (comments), empty lines, and those starting with Linux so its a pure csv -## then squash spaces and replace with commas -## them awk by delimiter comma to output -cat "$logfile" | sed '/^#\|^$\|^Linux/d' | tr -s ' ' ',' | awk -F, '{ cpup += $8; memk += $13; memp += $14; rkbs += $15; wkbs += $15 } END { print "\nCPU:",cpup/NR,"\nMemory Usage (KiB):",memk/NR,"\nMemory Usage %:",memp/NR,"\nKiB Read Per Second:",rkbs/NR,"\nKiB Written Per Second:",wkbs/NR }' #$1,$3,$8,$13,$14,$15,$16,$17 }' -# add footer -echo -e "Duration Seconds: $duration_seconds\nDuration Microseconds: $duration_microseconds\nReturn Code: $ret" \ No newline at end of file +# maek sure da log fileee DIESASDRGVWERT +if [ -f "$logfile" ]; then + rm -f "$logfile" +fi + +measure_performance () { + # use microseconds for timing for ONE MILLION DOLLARS more times resolution + start_unixmicroseconds=$(date +"%s%6N") # get start microseconds fast as possible before run + + # run the command with pidstart (-e) + eval "pidstat -h -H -d -r -u -I $poll_seconds -e $test_cmd >> \"$logfile\"" + ret=$? # get da return code + + # calculate durations + end_unixmicroseconds=$(date +"%s%6N") # get dis fast for accuracy + duration_microseconds=$(($end_unixmicroseconds - $start_unixmicroseconds)) + duration_seconds=$(($duration_microseconds / 1000000)) # seconds = microseconds / 1,000,000 + + if [ -z "$1" ]; then + echo "testing your gay littel command: $test_cmd" + # parse and show infos + cat "$logfile" | sed '/^#\|^$\|^Linux/d' | tr -s ' ' ',' | awk -F, '{ cpup += $8; memk += $13; memp += $14; rkbs += $15; wkbs += $15 } END { print "\nCPU:",cpup/NR,"\nMemory Usage (KiB):",memk/NR,"\nMemory Usage %:",memp/NR,"\nKiB Read Per Second:",rkbs/NR,"\nKiB Written Per Second:",wkbs/NR }' + + # nao add da rest + echo -e "Duration Seconds: $duration_seconds\nDuration Microseconds: $duration_microseconds\nReturn Code: $ret" + else + elapsed_seconds=$((`date +%s` - $start_seconds)) + # parse and appand dem 2 da csv + cat "$logfile" | sed '/^#\|^$\|^Linux/d' | tr -s ' ' ',' | awk -F, "{cpup+= \$8;memk+=\$13;memp +=\$14;rkbs+=\$15;wkbs+=\$16 } END {print \"$position\",\",\",cpup/NR,\",\",memk/NR,\",\",memp/NR,\",\",rkbs/NR,\",\",wkbs/NR,\",\",\"$duration_microseconds\",\",\",\"$test_cmd\",\",\",\"$ret\",\",\",\"$elapsed_seconds\"}" | tr -d ' ' | tee -a "$csv_file" + fi +} + +# main +## if oneshot mode +if [ ! -f "$input" ]; then + test_cmd="$@" + measure_performance +## if batch mode +else + # settans + results_log=$1.csv # todo: do file ext trickery + len=$(wc -l "$input" | awk '{print $1}') # num of lines in da fiel + count=1 + csv_file="${input%.*}.csv" + + if [ -f "$csv_file" ]; then + rm -f "$csv_file" + fi + + # add da csv headers to the results fiel + echo "Position,CPU %,Memory (KiB),Memory %,KiB Read/Second,KiB Written/Second,Duration Microseconds,Command,Return Code,Seconds Elapsed" | tee "$csv_file" + cat "$input" | \ + while read line; do + test_cmd="$line" + position="$count/$len" + measure_performance batch + count=$(($count + 1)) + done +fi \ No newline at end of file