Spring Boot 4.1.1 harness measuring first-response time versus initial heap size and a 20,000-request warmup. Shows -XX:+ZAdaptiveHeapSizing is not yet in any build. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01WzVQ6zFh9cuLPj9RSbRH8U
46 lines
1.9 KiB
Bash
Executable File
46 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Regenerates every file in output/. Set J25, J27, J28 to the three JDK home directories.
|
|
# Timing results drift between runs and machines; treat them as indicative, not exact.
|
|
set -u
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
OUT="$HERE/../output"; mkdir -p "$OUT"
|
|
: "${J25:?}" "${J27:?}" "${J28:?}"
|
|
export JDK_CLIENT="$J25"
|
|
RUNS=${RUNS:-5}
|
|
|
|
# 01 - what does each JDK say about the ZGC flags the two JEPs talk about?
|
|
{
|
|
for p in "25|$J25" "27|$J27" "28-ea|$J28"; do
|
|
v=${p%%|*}; h=${p#*|}
|
|
echo "== JDK $v"
|
|
"$h/bin/java" -version 2>&1 | grep -v Picked | sed -n 1p
|
|
"$h/bin/java" -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:+PrintFlagsFinal -version 2>&1 \
|
|
| grep -E ' (InitialHeapSize|MaxHeapSize|SoftMaxHeapSize|ZUncommit|ZUncommitDelay) ' | sed 's/ \{2,\}/ /g'
|
|
echo "-- probing -XX:+ZAdaptiveHeapSizing"
|
|
"$h/bin/java" -XX:+UseZGC -XX:+ZAdaptiveHeapSizing -version 2>&1 | grep -v Picked | sed -n 1p
|
|
echo
|
|
done
|
|
} > "$OUT/01-flag-probe.txt"
|
|
|
|
# 02 - startup versus initial heap size
|
|
{
|
|
for p in "jdk25|$J25" "jdk27|$J27" "jdk28ea|$J28"; do
|
|
l=${p%%|*}; h=${p#*|}
|
|
"$HERE/startup.sh" "$h" "$l zgc default" "$RUNS" -XX:+UseZGC
|
|
"$HERE/startup.sh" "$h" "$l zgc Xms64m" "$RUNS" -XX:+UseZGC -Xms64m
|
|
"$HERE/startup.sh" "$h" "$l zgc Xms1g" "$RUNS" -XX:+UseZGC -Xms1g
|
|
"$HERE/startup.sh" "$h" "$l zgc Xms3g" "$RUNS" -XX:+UseZGC -Xms3g
|
|
"$HERE/startup.sh" "$h" "$l zgc Xms3g pretouch" "$RUNS" -XX:+UseZGC -Xms3g -XX:+AlwaysPreTouch
|
|
done
|
|
} > "$OUT/02-startup-vs-xms.txt" 2>&1
|
|
|
|
# 03 - warmup: how long do the first 20,000 requests take?
|
|
{
|
|
for p in "jdk25|$J25" "jdk28ea|$J28"; do
|
|
l=${p%%|*}; h=${p#*|}
|
|
"$HERE/warmup.sh" "$h" "$l zgc default" -XX:+UseZGC
|
|
"$HERE/warmup.sh" "$h" "$l zgc Xms3g" -XX:+UseZGC -Xms3g
|
|
"$HERE/warmup.sh" "$h" "$l zgc Xms64m" -XX:+UseZGC -Xms64m
|
|
done
|
|
} > "$OUT/03-warmup.txt" 2>&1
|