04 November 2018

Om Broadwell, Skylake og Toffifee

Som mange vil vide, er det generelt (traditionelt) et krav ved 'varm' vMotion på VMware (altså med VM'en tændt), at man flytter VM'en til en host med en CPU magen til eller til en host med en nyere CPU. Man kan generelt ikke flytte en VM til en ældre CPU eller — mere teknisk korrekt — til en CPU med færre features. Sådan har det været ca. altid.

Siden ... lidt kortere end altid, men stadig meget længe, har man kunnet lave vMotion mellem forskellige generationer af CPU'er, hvis de nyeste er konfigureret med EVC (Enhanced vMotion Capability). EVC får groft sagt en (ny) generation af CPU til at 'maske' features, der ikke findes i en anden (ældre) generation af CPU, sådan at en kørende VM på den nye CPU alligevel kan flyttes til den gamle CPU.

Stor var forundringen derfor, da en af vores kunder for nyligt ikke kunne vMotion en kørende VM fra en platform med Broadwell CPU'er (HPE) til en platform med Skylake CPU'er (Cisco). Hvis man lukkede VM'en ned, flyttede den, og startede den igen på Skylake-serverne, kunne man godt flytte den frem og tilbage. Det virkede altså næsten som om, Skylake-platformen med EVC-mode Broadwell havde færre features end Broadwell-platformen... men det giver jo ikke mening!

Og eftersom vMotion naturligvis var testet mange gange tidligere i begge retninger, og problemet først blev opdaget længe efter seneste ændring, var fortvivlelsen næsten lige så stor som forundringen.

Men hvad nu hvis vi introducerer Toffifee i legen i form af Meltdown/Spectre fixes, opgraderet CPU-firmware, og ESXi- og vCenter-versioner, der ikke helt matcher mellem source og destination. Så bliver det en anelse mere langhåret... og legen bliver helt sikkert ødelagt, ligesom i reklamerne.

Det viser sig nemlig, at hvis CPU'en er firmware-opgraderet med Meltdown/Spectre-fixes, og ESXi er opgraderet til at forstå de fixes, og vCenter er opgraderet til at forstå forskellen mellem forskellige clustre med og uden fixes, så får hosten med fixes faktisk flere CPU-features, end hvis det hele ikke er opgraderet, selvom det er en ældre CPU-arkitektur. Eller i praksis: Broadwell-CPU'er med Meltdown/Spectre-fixes og en relativt ny ESXi med Meltdown/Spectre-fixes, har flere CPU-features end Skylake-CPU'er med Meltdown/Spectre-fixes og en lidt ældre ESXi uden Meltdown/Spectre-fixes. 

Jeg siger det lige igen: Broadwell-CPU'er kan have flere features end Skylake-CPU'er.

Det er ikke lige det første, man overvejer.

-A