50% O carregamento em 2 CPUs é o mesmo que 100% Load on One CPU?

2

Uma dúvida muito básica: tenho um aplicativo em execução em uma VM com 2 vCPUs. A carga média é um pouco menor que 50% em ambas as CPUs.

Isso significa que 1 CPU será suficiente para meu aplicativo? Ou mais CPUs se beneficiam de threads sendo executados em paralelo?

Editar: Aqui um exemplo real do meu sistema, que consiste em 8CPU, mais de um mês. Os dados são normalizados para 100% = 8CPU. Gostaria de saber se essa informação é suficiente para resolver minha pergunta, basicamente se o sistema é superdimensionado.

    
por Glasnhost 26.10.2018 / 18:29

2 respostas

6

Não é tão simples assim. Com um thread ou processo que queima o tanto CPU quanto possível , ele atingirá no máximo 50% da CPU em um sistema de duas CPUs. Ou, alguns sistemas mostrarão como 100% da CPU, porque o máximo é 200% da CPU.

Se você tem dois threads rodando a 50% da CPU de um núcleo (para que eles não maximizem), talvez eles rodarão o mais rápido possível em um único núcleo, mas então você veja 100%. (Isso não leva em conta que a máquina tem outras coisas para fazer e que a comutação de contexto causa sobrecarga.)

Por exemplo, se você tem dois threads que dormem 50% do tempo e calculam os outros 50% do mesmo, uma CPU pode alternar o sono e o cálculo desses dois threads para que 100% da CPU seja usada .

Editar:

Eu pensei em mostrar alguns gráficos de exemplo que ilustram isso.

Este servidor executa 16 processos de alta CPU e algumas centenas de baixa CPU. Em março, decidi atualizá-lo para 8 CPUs / núcleos (daí o salto para 800%), principalmente porque eu tive que rodar um software extra por um tempo, o que você pode ver.

Emgrandepartedemaioajulho,4núcleospoderiamforamsuficientes.Noentanto,seiquealgunsdosmeusprocessos(fazendoprocessamentoemlote)teriamsidoatrasados.

Esteéográficodecargaqueoacompanha:

Ele se correlaciona, mas como você pode ver, não é apenas porcentagem / 100.

Você deseja que esses gráficos sejam capazes de tomar decisões fundamentadas.

Edite 2, sobre seus gráficos:

Interessante. Com o que esses gráficos foram feitos? Ambos representam os dados do jeito oposto ao qual estou acostumado: parece que a utilização da CPU vai para 100% para todos os núcleos no sistema, em vez de 100% por núcleo, como meus gráficos. Você pode testá-lo executando dd if=/dev/urandom of=/dev/null por algumas horas; Isso fará com que um núcleo seja maximizado e você verá o efeito.

Os gráficos de carga mostram a carga por núcleo . Eu nunca vi isso antes. uptime , htop , munin : todos mostram apenas load .

    
por 26.10.2018 / 18:47
-2

Na verdade, você nunca consegue entender o requisito apenas observando o uso da CPU; a CPU moderna gera segmentos de maneira adequada, conforme os requisitos.

Mais o núcleo mais vantagem que um aplicativo pode ter para executar threads.

    
por 27.10.2018 / 11:39

Tags