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:
+17
-3
@@ -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) ==="
|
||||||
|
|||||||
Reference in New Issue
Block a user