|
88 | 88 | timeout-minutes: 30 |
89 | 89 |
|
90 | 90 | steps: |
| 91 | + - name: Validate EC2 type and CPU model |
| 92 | + run: | |
| 93 | + # c5.metal: Intel Xeon Platinum 8275CL (Cascade Lake), 96 vCPUs, 2 NUMA nodes |
| 94 | + EXPECTED_INSTANCE_TYPE="c5.metal" |
| 95 | + EXPECTED_CPU="8275CL" |
| 96 | + EXPECTED_STEPPING="7" |
| 97 | + EXPECTED_VCPUS="96" |
| 98 | +
|
| 99 | + TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds:60") |
| 100 | + INSTANCE_TYPE=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-type) |
| 101 | + CPU_MODEL=$(grep 'model name' /proc/cpuinfo | head -1 | sed 's/.*: //') |
| 102 | + CPU_STEPPING=$(lscpu | grep '^Stepping:' | awk '{print $2}') |
| 103 | + CPU_COUNT=$(nproc) |
| 104 | +
|
| 105 | + echo "Instance type: $INSTANCE_TYPE" |
| 106 | + echo "CPU: $CPU_MODEL" |
| 107 | + echo "Stepping: $CPU_STEPPING" |
| 108 | + echo "vCPUs: $CPU_COUNT" |
| 109 | + lscpu | grep -E 'Model name|Stepping|CPU max MHz|CPU\(s\):|NUMA' |
| 110 | +
|
| 111 | + ERRORS="" |
| 112 | + if [ "$INSTANCE_TYPE" != "$EXPECTED_INSTANCE_TYPE" ]; then |
| 113 | + ERRORS="${ERRORS}Instance type: expected '$EXPECTED_INSTANCE_TYPE', got '$INSTANCE_TYPE'\n" |
| 114 | + fi |
| 115 | + if ! echo "$CPU_MODEL" | grep -q "$EXPECTED_CPU"; then |
| 116 | + ERRORS="${ERRORS}CPU model: expected '$EXPECTED_CPU', got '$CPU_MODEL'\n" |
| 117 | + fi |
| 118 | + if [ "$CPU_STEPPING" != "$EXPECTED_STEPPING" ]; then |
| 119 | + ERRORS="${ERRORS}Stepping: expected '$EXPECTED_STEPPING', got '$CPU_STEPPING'\n" |
| 120 | + fi |
| 121 | + if [ "$CPU_COUNT" != "$EXPECTED_VCPUS" ]; then |
| 122 | + ERRORS="${ERRORS}vCPU count: expected '$EXPECTED_VCPUS', got '$CPU_COUNT'\n" |
| 123 | + fi |
| 124 | +
|
| 125 | + if [ -n "$ERRORS" ]; then |
| 126 | + echo "ERROR: Hardware validation failed:" |
| 127 | + echo -e "$ERRORS" |
| 128 | + echo "This machine does not match expected c5.metal specs. Failing early to avoid inconsistent benchmark results." |
| 129 | + exit 1 |
| 130 | + fi |
| 131 | + echo "✓ Hardware validated: $CPU_MODEL, stepping $CPU_STEPPING, $CPU_COUNT vCPUs" |
| 132 | +
|
91 | 133 | - uses: actions/checkout@v4 |
92 | 134 |
|
93 | 135 | - name: Set up Java 21 and Maven |
|
0 commit comments