Base de conocimientos

Steal time, y por qué el tuyo marca cero

Steal time es el hipervisor admitiendo que otro huésped tomó tu núcleo; en núcleos dedicados no hay nada que tomar, así que la parte útil es qué comprobar en su lugar.

De dónde sale el número

%st en top es la parte del tiempo en que su CPU virtual era ejecutable pero no se programaba en un núcleo físico, según informa el hipervisor. El contador existe porque un invitado no puede distinguir de otro modo entre un núcleo lento y un núcleo que nunca recibió.

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

El valor crudo, para quien quiera graficarlo por su cuenta, es el octavo campo de la línea cpu en /proc/stat, contado en USER_HZ:

grep -w cpu /proc/stat

Por qué aquí es cero

Los núcleos se asignan una vez. Una vCPU de su instancia está fijada a un núcleo físico que no está en la asignación de nadie más, en un host sin sobreventa, así que no hay cola en la que esperar. Ni una cifra baja, ni un saldo de crédito que se agota al cuarto día del mes: nada que robar.

Si el suyo no es cero, es un defecto y queremos el ticket. Incluya una ejecución de mpstat -P ALL 5 12 y el ID de la instancia.

Por qué las cifras de otros no son cero

Los planes burstable se construyen sobre el tiempo robado. Varios invitados comparten un núcleo, cada uno tiene un saldo de crédito, y cuando el saldo se vacía el programador entrega el núcleo a otro. Vendido con honestidad, es un producto legítimo para cargas de trabajo inactivas. No es este. Eliminamos el nivel barato en 2021 y la sobreventa se fue con él.

Qué comprobar cuando la máquina se siente lenta de todos modos

El robo es lo primero que todos miran y rara vez es la respuesta. En orden de probabilidad:

Cola de ejecución

vmstat 1 5

Más hilos ejecutables que núcleos, en la columna r, significa que simplemente se quedó sin CPU. Ningún ajuste inventa otro núcleo.

Disco

iostat -x 1 5

%iowait subiendo mientras el tiempo de usuario se mantiene bajo apunta al almacenamiento, no al procesador.

Su propio cgroup

Este es el que atrapa a la gente. Un contenedor con una cuota de CPU se siente exactamente como tiempo robado desde dentro del proceso y reporta robo cero, porque el límite es suyo y no nuestro:

cat /sys/fs/cgroup/cpu.stat

nr_throttled y throttled_usec subiendo significa que la cuota establecida por su propio orquestador es el techo. Súbala o elimínela.

Frecuencia

Los relojes boost se mueven con la carga de trabajo, y una prueba de un solo hilo es la forma honesta de ver dónde está realmente:

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

Compare la cifra de eventos por segundo contra otra instancia en lugar de contra un número de un blog de alguien en 2019.

Columnas invitado y anidadas

%guest y %gnice solo son distintos de cero cuando está ejecutando máquinas virtuales dentro de su instancia. La virtualización anidada está disponible en los planes EPYC más grandes y en metal desnudo; verifique el dispositivo antes de diseñar en torno a él:

ls -l /dev/kvm

La versión corta

r alto con tiempo de usuario cerca del cien por ciento es la CPU. %iowait alto es el disco. cpu.stat contando estrangulamientos es su propia cuota. Robo distinto de cero somos nosotros, y no debería ocurrir.

Listo cuando tú lo estés

Elige una ciudad. Elige un tamaño. Paga con monedas.

Sin fórmulas sobre quién eres, sin esperar a que un humano te apruebe, sin llamada telefónica para verificar nada. La factura se liquida y las credenciales llegan a tu bandeja de entrada.