Add time-series resource profiling

- Track memory and CPU usage over program lifetime
- Store elapsed time with each sample
- Generate timeline data for visualization
- Enable detailed performance analysis
This commit is contained in:
Ein Anderssono
2026-04-23 00:58:15 +02:00
parent 5bcfbc0b52
commit 83d3c1ba46
+17 -3
View File
@@ -64,15 +64,25 @@ profile_resources() {
local pid=$1 local pid=$1
local mem_output_file=$2 local mem_output_file=$2
local cpu_output_file=$3 local cpu_output_file=$3
local timeline_file=$4
local peak_mem=0 local peak_mem=0
local peak_cpu=0 local peak_cpu=0
local current_mem local current_mem
local current_cpu local current_cpu
local start_time=$(date +%s%N)
local sample_count=0
# Clear output files
> "$mem_output_file"
> "$cpu_output_file"
> "$timeline_file"
# Sample resources every 10ms while process is running # Sample resources every 10ms while process is running
while kill -0 "$pid" 2>/dev/null; do while kill -0 "$pid" 2>/dev/null; do
current_mem=$(get_memory_usage "$pid") current_mem=$(get_memory_usage "$pid")
current_cpu=$(get_cpu_usage "$pid") current_cpu=$(get_cpu_usage "$pid")
current_time=$(date +%s%N)
elapsed_ms=$(( (current_time - start_time) / 1000000 ))
if [ "$current_mem" -gt "$peak_mem" ]; then if [ "$current_mem" -gt "$peak_mem" ]; then
peak_mem=$current_mem peak_mem=$current_mem
@@ -81,12 +91,16 @@ profile_resources() {
peak_cpu=$current_cpu peak_cpu=$current_cpu
fi fi
echo "$current_mem" >> "$mem_output_file" # Store time-series data
echo "$current_cpu" >> "$cpu_output_file" echo "$elapsed_ms $current_mem" >> "$mem_output_file"
echo "$elapsed_ms $current_cpu" >> "$cpu_output_file"
echo "$elapsed_ms $current_mem $current_cpu" >> "$timeline_file"
sample_count=$((sample_count + 1))
sleep 0.01 2>/dev/null || sleep 0.1 sleep 0.01 2>/dev/null || sleep 0.1
done done
echo "$peak_mem $peak_cpu" echo "$peak_mem $peak_cpu $sample_count"
} }
echo "=== Pi-beräkning med $DECIMALS decimaler (4 körningar, genomsnitt av 3 efter warmup) ===" echo "=== Pi-beräkning med $DECIMALS decimaler (4 körningar, genomsnitt av 3 efter warmup) ==="