Files
local-ci-cd-system/plans/archived/2026-06-07/benchmark-windows-host.md
T
Simone 8f1b3b7eb1 chore(plans): archive completed Phase B docs
Phase B is closed (checklist Passi 1–9 [x], benchmark matrix §6–§14
recorded). Move the two finished working docs into the dated archive:

  plans/PhaseB-user-checklist.md   → plans/archived/2026-06-07/
  plans/benchmark-windows-host.md  → plans/archived/2026-06-07/

plans/ now holds only the forward-looking plans (idea-3 Phase C pwsh
removal, idea-4 Phase D ESXi, ideas-overview). Fixed the live links that
pointed at the moved/relocated files: idea-3 §4, idea-2 §8 (relative path),
and ideas-overview (idea-1/idea-2 now under archived/, Phase A+B marked ).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 19:41:24 +02:00

152 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plan — Windows-host benchmarks (comparable to Linux-host §6–§10)
> **Scopo**: la macchina è dual-boot (Windows ⇄ Linux, stesso hardware).
> Le baseline RUNBOOK §6–§10 sono quasi tutte sul **Linux host**. Questo
> plan raccoglie i numeri mancanti sul **Windows host** per chiudere la
> matrice host × guest × IP-mode e rendere il confronto Linux-vs-Windows
> completo e simmetrico.
>
> **Prerequisito**: riavviare la macchina nel boot entry **Windows**.
> Tutto gira su Windows PowerShell 5.1 o pwsh 7; usare la stessa
> `Measure-CIBenchmark.ps1` / `Test-CapacityBurnIn.ps1` del repo (sono
> cross-platform, i default path passano a `F:\CI\...` quando `$IsWindows`).
---
## 1. Cosa esiste già e cosa manca
| RUNBOOK § | Host | Guest | IP mode | Stato |
| --------- | ----- | -------------- | --------------------- | ------------ |
| §6 | Win | WinBuild2025 | DHCP | ✓ 2026-05-17 |
| §7 | Linux | WinBuild2025 | DHCP | ✓ |
| §8 | Linux | WinBuild2025 | static | ✓ |
| §9 | Linux | Win + Linux | burn-in (static pool) | ✓ |
| §10 | Linux | LinuxBuild2404 | DHCP | ✓ |
**Mancanti sul Windows host** (target di questo plan):
| Nuovo § | Host | Guest | IP mode | Pair-with |
| ------- | ---- | -------------- | ------------ | --------- |
| §11 | Win | WinBuild2025 | static | §8 |
| §12 | Win | LinuxBuild2404 | DHCP | §10 |
| §13 | Win | Win + Linux | burn-in 4×10 | §9 |
§6 copre già Win×Win×DHCP. Opzionale: ri-eseguirlo nella stessa sessione per
coerenza (stesso disco/fragmentazione del momento).
---
## 2. Prerequisiti sul Windows host
- [x] Boot in Windows; verificare VMware Workstation + `vmrun.exe` in
`C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe`.
- [x] Template fully powered-off con snapshot integri:
```powershell
& 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' -T ws listSnapshots 'F:\CI\Templates\WinBuild2025\WinBuild2025.vmx'
& 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' -T ws listSnapshots 'F:\CI\Templates\LinuxBuild2404\LinuxBuild2404.vmx'
```
Attesi: `BaseClean` e `BaseClean-Linux`. ✓ (anche `PostInstall` su Win)
- [x] Credenziali in **Windows Credential Manager** (non keyring file):
target `BuildVMGuest` (guest WinRM, user `ci_build`) e `GiteaPAT`
(user `Simone`). Verificato.
- [x] Chiave SSH guest Linux presente: `F:\CI\keys\ci_linux` (per §12/§13
lato LinuxBuild2404).
- [x] Gitea raggiungibile (`http://10.10.20.11:3100`, HTTP 200) e repo
`Simone/burnin-dummy` con `build.ps1` + `build.sh` (verificato via API).
- [x] `F:\CI\BuildVMs\` privo di cloni orfani e `F:\CI\ip-pool.json` assente
(pulito). Reset se serve:
```powershell
Set-Content -Path 'F:\CI\ip-pool.json' -Value '{}' -NoNewline
```
---
## 3. §11 — WinBuild2025 static IP (pair §8)
```powershell
.\scripts\Measure-CIBenchmark.ps1 `
-TemplatePath 'F:\CI\Templates\WinBuild2025\WinBuild2025.vmx' `
-SnapshotName BaseClean `
-StaticIP 192.168.79.200 -Netmask 255.255.255.0 `
-Iterations 10
```
- [x] 10 iter completate, tabella per-fase stampata. **Boot total avg 29.75 s.**
- [x] Confronto vs §8 (Linux host static): IP-floor confermato host-independent
(22.81 s vs 21.77 s, +5 %). Penalità host: clone +58 % (NTFS), Ready +4.7 s
(WinRM re-bind dopo NIC reconfig), destroy +82 % (bimodale), boot +24 %.
Vedi RUNBOOK §11. **Nota**: primo tentativo fallito (timeout 300 s/iter) —
template Windows privo dell'agent `ci-static-ip`; risolto copiando i
template dal Linux host (parità template).
## 4. §12 — LinuxBuild2404 DHCP (pair §10)
```powershell
.\scripts\Measure-CIBenchmark.ps1 `
-TemplatePath 'F:\CI\Templates\LinuxBuild2404\LinuxBuild2404.vmx' `
-SnapshotName BaseClean-Linux `
-GuestOS Linux `
-Iterations 10
```
- [x] 10 iter completate. **Boot total avg 13.51 s.**
- [x] Confronto vs §10 (Linux host, 8.82 s): **+53 %** host-side — clone +191 %
(NTFS), IP-acquire +52 % (NAT vmnet8 Windows + guestinfo). Guest Linux resta
deterministico (IP σ ≈ 0.05 s). Vedi RUNBOOK §12.
## 5. §13 — Concurrent burn-in 4×10 (pair §9)
```powershell
# WinBuild2025
.\scripts\Test-CapacityBurnIn.ps1 `
-Parallelism 4 -Rounds 10 `
-TemplatePath 'F:\CI\Templates\WinBuild2025\WinBuild2025.vmx' `
-RepoUrl 'http://10.10.20.11:3100/Simone/burnin-dummy.git' `
-CloneBaseDir 'F:\CI\BuildVMs\' `
-ArtifactBaseDir 'F:\CI\Artifacts\' `
-VmrunPath 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' `
-BuildCommand 'powershell -ExecutionPolicy Bypass -File .\build.ps1'
# LinuxBuild2404 (snapshot OBBLIGATORIO, default è BaseClean=Windows)
.\scripts\Test-CapacityBurnIn.ps1 `
-Parallelism 4 -Rounds 10 `
-TemplatePath 'F:\CI\Templates\LinuxBuild2404\LinuxBuild2404.vmx' `
-SnapshotName BaseClean-Linux `
-RepoUrl 'http://10.10.20.11:3100/Simone/burnin-dummy.git' `
-CloneBaseDir 'F:\CI\BuildVMs\' `
-ArtifactBaseDir 'F:\CI\Artifacts\' `
-VmrunPath 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' `
-GuestOS Linux `
-BuildCommand 'bash build.sh'
```
- [~] **Linux 40/40 PASS (10/10 round). Windows 36/40 (7/10 round).** I 4 fail
Windows = fault WinRM transitori (round 68: connect-timeout 5986 +
WSManFault "shell not found") sotto 4× concorrenza; auto-recuperati (slot IP
rilasciati, 0 cloni orfani, round 910 di nuovo puliti). Linux/SSH 0 fault.
- [x] Round avg vs §9 (Win ~78.6 s, Lin ~70.2 s): Windows host Win ~91.6 s
(round PASS) **+16 %** + instabilità WinRM; Lin 96.4 s **+37 %**.
Vedi RUNBOOK §13. **Pre-req scoperti**: (1) parità template, (2) prod venv
F:\CI\python\venv stale (pre-`ip_pool`) → reinstallato `pip install .`,
(3) `CI_VENV_PYTHON` da settare (bug shim `$IsWindows` su PS 5.1+StrictMode).
---
## 6. Output e documentazione
- Tutti i run appendono a `F:\CI\Logs\benchmark.jsonl` (single-job) e
stampano summary (burn-in).
- [x] Risultati aggiunti a `docs/RUNBOOK.md` §11–§13 (+ §14 matrice completa),
con confronto host Linux-vs-Windows per ciascuna coppia.
- [x] Pulizia post-run: `F:\CI\BuildVMs\` vuoto, artifact `burnin-*`
rimossi, `F:\CI\ip-pool.json` reset.
---
## 7. Matrice finale attesa (dopo questo plan)
| Host \ (Guest, mode) | Win/DHCP | Win/static | Lin/DHCP | burn-in 4×10 |
| -------------------- | -------- | ---------- | -------- | ------------ |
| **Linux** | §7 | §8 | §10 | §9 |
| **Windows** | §6 | §11 | §12 | §13 |
Confronto colonna-per-colonna = **effetto host** a guest+mode costanti.
Confronto riga-per-riga = **effetto guest/IP-mode** a host costante.