# 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 - [ ] Boot in Windows; verificare VMware Workstation + `vmrun.exe` in `C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe`. - [ ] 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`. - [ ] Credenziali in **Windows Credential Manager** (non keyring file): target `BuildVMGuest` (guest WinRM) e `GiteaPAT` (clone in-VM). Verifica: `cmdkey /list | findstr /i "BuildVMGuest GiteaPAT"`. - [ ] Chiave SSH guest Linux presente: `F:\CI\keys\ci_linux` (per §12/§13 lato LinuxBuild2404). - [ ] Gitea raggiungibile (`http://10.10.20.11:3100`) e repo `Simone/burnin-dummy` con `build.ps1` + `build.sh` (per §13). - [ ] `F:\CI\BuildVMs\` privo di cloni orfani e `F:\CI\ip-pool.json` (se esiste) pulito — stesso caveat lease stale del Linux host (RUNBOOK §9 / TODO §2.8). 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 ``` - [ ] 10 iter completate, tabella per-fase stampata. - [ ] Confronto vs §8 (Linux host static): atteso clone/start simili, IP-acquire dominato da `ci-static-ip.ps1` (~21.8 s floor, indipendente dall'host). Delta host atteso piccolo sulle fasi non-IP. ## 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 ``` - [ ] 10 iter completate. - [ ] Confronto vs §10 (Linux host, Lin guest DHCP, boot total 8.82 s): isola l'**effetto host** sul guest Linux. Se Win host ≫ 8.82 s, l'overhead è host-side (NTFS / NAT vmnet8 Windows), non guest. ## 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' ``` - [ ] Entrambi 40/40 PASS, 10/10 round. - [ ] Round avg vs §9 (Linux host: Win ~78.6 s, Lin ~70.2 s): delta = effetto host sotto concorrenza 4×. --- ## 6. Output e documentazione - Tutti i run appendono a `F:\CI\Logs\benchmark.jsonl` (single-job) e stampano summary (burn-in). - [ ] Copiare/annotare i risultati e aggiungere a `docs/RUNBOOK.md` le sezioni **§11–§13** con le stesse tabelle di §8/§9/§10 e una riga finale di **confronto host Linux-vs-Windows** per ciascuna coppia. - [ ] 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.