Base di conoscenza

Steal time, e perché il tuo legge zero

Steal time è l'hypervisor che ammette un altro ospite ha preso il tuo core; su core dedicati non c'è nulla da prendere, quindi la parte utile è cosa controllare invece.

Da dove viene il numero

%st in top è la quota di tempo in cui la tua vCPU era eseguibile ma non programmata su un core fisico, come riportato dall'hypervisor. Il contatore esiste perché un guest non può altrimenti distinguere tra un core lento e un core che non ha mai ricevuto.

top -bn1 | head -3
vmstat 1 5
mpstat -P ALL 1 5

Il valore grezzo, per chi lo grafica da solo, è l'ottavo campo della riga cpu in /proc/stat, conteggiato in USER_HZ:

grep -w cpu /proc/stat

Perché qui è zero

I core sono allocati una volta sola. Una vCPU sulla tua istanza è assegnata a un core fisico che non è nell'allocazione di nessun altro, su un host che non è oversubscribed, quindi non c'è una coda in cui aspettare. Non un valore basso, non un saldo di crediti che si esaurisce il quarto giorno del mese — niente da rubare.

Se il tuo non è zero, questo è un difetto e vogliamo il ticket. Includi un' esecuzione di mpstat -P ALL 5 12 e l'ID dell'istanza.

Perché i valori degli altri non sono zero

I piani burstable sono costruiti sul tempo di steal. Più guest condividono un core, ciascuno ha un saldo di crediti, e quando il saldo si esaurisce lo scheduler passa il core a qualcun altro. Venduto onestamente, è un prodotto legittimo per carichi di lavoro che restano in idle. Non è questo. Abbiamo eliminato il livello economico nel 2021 e l'overselling se n'è andato con lui.

Cosa controllare quando la macchina è lenta comunque

Il steal è la prima cosa che tutti guardano e raramente è la risposta. In ordine di probabilità:

Coda di run

vmstat 1 5

Più thread eseguibili che core, nella colonna r, significa che hai semplicemente esaurito la CPU. Nessuna ottimizzazione inventa un altro core.

Disco

iostat -x 1 5

%iowait in aumento mentre il tempo utente resta basso indica storage, non processore.

Il tuo stesso cgroup

Questo è quello che frega la gente. Un container con una quota CPU si sente esattamente come tempo di steal dall'interno del processo e riporta zero steal, perché il limite è tuo e non nostro:

cat /sys/fs/cgroup/cpu.stat

Se nr_throttled e throttled_usec salgono, significa che la quota impostata dal tuo orchestratore è il tetto. Alzala o rimuovila.

Frequenza

Le frequenze boost si muovono con il carico di lavoro, e un test single-threaded è il modo onesto per vedere dove ti trovi davvero:

apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

Confronta il valore di eventi al secondo con un'altra istanza, non con un numero tratto dal blog di qualcuno del 2019.

Colonne guest e annidate

%guest e %gnice sono diversi da zero solo quando esegui macchine virtuali all'interno della tua istanza. La virtualizzazione annidata è disponibile sui piani EPYC più grandi e su bare metal; controlla il dispositivo prima di progettare attorno ad esso:

ls -l /dev/kvm

La versione breve

r alto con tempo utente vicino al cento per cento è la CPU. %iowait alto è il disco. cpu.stat che conta i throttle è la tua quota. Steal non-zero siamo noi, e non dovrebbe accadere.

Pronto quando lo sei

Scegli una città. Scegli una dimensione. Paga in criptovaluta.

Nessun modulo su chi sei, nessuna attesa per l'approvazione di una persona, nessuna chiamata per verificare nulla. La fattura viene saldata e le credenziali arrivano nella tua casella di posta.