Base de conhecimento

Roubo de tempo, e por que o seu marca zero

Roubo de tempo é o hipervisor admitindo que outro convidado tomou seu núcleo; em núcleos dedicados não há nada para tomar, então a parte útil é o que verificar em vez disso.

De onde vem o número

%st em top é a parcela do tempo em que sua CPU virtual estava executável, mas não agendada em um núcleo físico, conforme relatado pelo hipervisor. O contador existe porque um convidado não consegue, de outra forma, distinguir entre um núcleo lento e um núcleo que nunca recebeu.

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

O valor bruto, para quem quiser plotar por conta própria, é o oitavo campo da linha cpu em /proc/stat, contado em USER_HZ:

grep -w cpu /proc/stat

Por que é zero aqui

Os núcleos são alocados uma única vez. Uma vCPU na sua instância é fixada a um núcleo físico que não está na alocação de mais ninguém, em um host sem oversubscription, então não há fila para esperar. Não é um número baixo, não é um saldo de créditos que acaba no quarto dia do mês — nada para roubar.

Se o seu não for zero, isso é um defeito e queremos o ticket. Inclua uma execução de mpstat -P ALL 5 12 e o ID da instância.

Por que os números dos outros não são zero

Planos burstable são construídos sobre steal time. Vários convidados compartilham um núcleo, cada um mantém um saldo de créditos, e quando o saldo esvazia, o agendador entrega o núcleo a outra pessoa. Vendido honestamente, é um produto legítimo para cargas de trabalho ociosas. Não é este. Excluímos o nível barato em 2021 e o overselling foi junto.

O que verificar quando a máquina parece lenta mesmo assim

Steal é a primeira coisa que todos olham e raramente é a resposta. Em ordem de probabilidade:

Fila de execução

vmstat 1 5

Mais threads executáveis do que núcleos, na coluna r, significa que você simplesmente ficou sem CPU. Nenhuma quantidade de ajuste inventa outro núcleo.

Disco

iostat -x 1 5

%iowait subindo enquanto o tempo de usuário permanece baixo aponta para armazenamento, não para o processador.

Seu próprio cgroup

Este é o que pega as pessoas. Um contêiner com cota de CPU parece exatamente steal time de dentro do processo e reporta steal zero, porque o limite é seu e não nosso:

cat /sys/fs/cgroup/cpu.stat

nr_throttled e throttled_usec subindo significa que a cota definida pelo seu próprio orquestrador é o teto. Aumente ou remova.

Frequência

Os clocks de boost se movem com a carga de trabalho, e um teste de thread única é a forma honesta de ver onde você realmente está:

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

Compare o número de eventos por segundo com outra instância, em vez de um número do blog de alguém de 2019.

Colunas de convidado e aninhado

%guest e %gnice são diferentes de zero apenas quando você está executando máquinas virtuais dentro da sua instância. Virtualização aninhada está disponível nos planos EPYC maiores e em bare metal; verifique o dispositivo antes de projetar em torno dele:

ls -l /dev/kvm

A versão curta

r alto com tempo de usuário perto de cem por cento é a CPU. %iowait alto é o disco. cpu.stat contando throttles é sua própria cota. Steal não zero é nosso, e não deveria acontecer.

Pronto quando você estiver

Escolha uma cidade. Escolha um tamanho. Pague em cripto.

Sem formulários sobre quem você é, sem esperar aprovação de um humano, sem ligação para verificar nada. O pagamento é confirmado e as credenciais chegam na sua caixa de entrada.