AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 760363
Accepted
acjca2
acjca2
Asked: 2023-11-01 23:09:22 +0800 CST2023-11-01 23:09:22 +0800 CST 2023-11-01 23:09:22 +0800 CST

Como a média de carga deve ser calculada em uma CPU com núcleos de eficiência?

  • 772

Recentemente recebi um MacBook Pro com CPU M1 pro, que possui 2 núcleos de “eficiência” e 8 núcleos de desempenho. Quando executo htop/btop/top obtenho uma média de carga >2 porque o agendador de processos sempre atribui certos processos de menor demanda aos núcleos de eficiência, o que faz com que esses núcleos sempre funcionem com 60 a 100% da capacidade.

Sinto que os 2 núcleos de eficiência reduzem a utilidade da métrica média de carga, que já foi reduzida devido aos múltiplos núcleos. Em um passado distante e obscuro, tínhamos CPUs de núcleo único nas quais a média de carga fazia sentido intuitivamente. No entanto, agora temos 2 tipos de núcleo de CPU em um único sistema, e meu telefone mais recente tem 3 tipos diferentes de núcleo: eficiência, desempenho e um único núcleo de ultra desempenho.

Como deveria ser calculada essa nova média de carga? Há algum esforço contínuo para redefinir uma métrica geral de carga do sistema?

Como os núcleos de eficiência são feitos para executar processos de baixa prioridade, talvez faça sentido excluí-los da métrica padrão? Em seguida, divida o valor de carga restante entre as CPUs não eficientes.

Por exemplo, uma média de carga de 3,4. Subtraia 2 para os núcleos de eficiência, 1,4. Em seguida, divida pelo número de núcleos de desempenho, 1,4/8 = 0,175.

cpu
  • 1 1 respostas
  • 28 Views

1 respostas

  • Voted
  1. Best Answer
    Marcus Müller
    2023-11-01T23:41:12+08:002023-11-01T23:41:12+08:00

    Primeiro, devemos falar sobre o que realmente é "carga": é o número de processos em execução, mais o número de processos que estão atualmente no que é chamado de "sono ininterrupto", ou seja, principalmente estes aguardando dados de IO periféricos.

    Isso significa que se você tiver uma máquina de 16 núcleos (não importa quão "fortes ou fracos" sejam os núcleos individuais) e executar 100 processos, cada um carregando IO pesadamente (por exemplo, martelando páginas de arquivos mapeados na memória ou sendo carregado conforme necessário na troca), você pode obter uma carga de 100. Isso significa que essa média de carga não é principalmente uma função do uso dos núcleos da CPU. Ele tenta medir um pouco o quão carregado está o seu sistema atual .

    Não é realmente útil comparar cargas em máquinas diferentes. Faz sentido compará-los na mesma máquina - se sua carga suavizada ( a média de carga estiver errada no sentido estrito; se você tiver formação em engenharia elétrica, essas são médias móveis ponderadas exponencialmente , ou seja, saídas simples de filtro IIR unipolar) diminui, você está recuperando o trabalho, se aumentar, você está trabalhando mais. Mas você não pode colocar duas máquinas diferentes próximas uma da outra e esperar que as cargas sejam sensatamente comparáveis ​​​​- e, como tal, redefinir a carga para ser mais universalmente útil em diferentes arquiteturas de CPU é uma coisa discutível a se fazer. Nunca foi feito para ser isso.

    Sinto que os 2 núcleos de eficiência reduzem a utilidade da métrica de média de carga

    Agora, sabendo que você fez a pergunta assumindo que "carga" é apenas "carga de CPU" (ou seja, a quantidade de CPUs que não estão ociosas em um determinado momento), teremos que resolver isso em vez de discutir a medida de "carga" do Linux.

    Essa utilização da CPU já era quase inútil no passado – uma vez que os núcleos da CPU eram escalonados em frequência dinamicamente; o momento que atingiu os computadores de consumo (laptops) foi por volta de 2000 com o PowerNow! da AMD. 50% do tempo de um núcleo rodando a 1,2 GHz simplesmente não vale o tempo de um núcleo rodando a 3,9 GHz; e ambos existem no mesmo sistema ao mesmo tempo, e ambos podem mudar de frequência durante o tempo que está sendo levado em consideração para calcular médias de longo prazo. E isso acontecerá exatamente quando a utilização da CPU ultrapassar os limites e houver tarefas suficientes em estado pronto. Então, sim, não. Sinceramente, trato a "utilização da CPU" como nada mais do que "se estiver abaixo de talvez 90%, meu sistema definitivamente pode fazer mais trabalho de CPU, fora isso, é difícil dizer e depende do trabalho".

    Então, francamente, não tem sido uma métrica muito útil nos últimos cerca de 20 anos.

    Em um passado distante e obscuro, tínhamos CPUs de núcleo único nas quais a média de carga fazia sentido intuitivamente.

    O escalonamento de frequência já era uma coisa naquela época, e "a CPU está aguardando armazenamento ou rede 90% do tempo" ainda parece baixa utilização, mas na verdade diz "da carga de trabalho que estou tentando atender, tenho 100% saturação". Há uma quantidade muito limitada de intuição nisso - mais recentemente desde o início da década de 1990, CPUs, RAM e barramentos periféricos foram desacoplados, e isso tornou a medição do tempo em que a CPU não ficou ociosa uma tentativa questionável de descrever o sistema .carregar. Tudo o que ele fornece é a informação se um dos muitos recursos limitados do seu computador está esgotado, e a porcentagem não é nem de longe proporcional à capacidade real de realizar mais trabalho, porque um computador com 0,1 · (contagem de núcleos) de utilização da CPU é provavelmente não funciona muito em altas taxas de clock; portanto, com carga mais alta, o computador repentinamente se torna mais capaz. O mesmo, embora ainda mais complexo e difícil de prever, acontece quando o computador tem núcleos de CPU heterogêneos (e isso não é uma invenção nova – o hyperthreading já trouxe isso para computadores de consumo há cerca de 15 anos, e os computadores NUMA já existiam muito antes) .

    Como deveria ser calculada essa nova média de carga?

    Francamente: de jeito nenhum. Fique com a métrica atual! A métrica de carga atual tem um propósito: tornar comparável a situação de carga de trabalho na mesma máquina. E continua fazendo isso; de qualquer maneira, é difícil fazer comparações sensatas entre plataformas:

    Há algum esforço contínuo para redefinir uma métrica geral de carga do sistema?

    Pessoas que realmente se preocupam com a forma como seus sistemas são utilizados para dimensioná-los corretamente para suas cargas de trabalho (e não apenas como, para um laptop, se o sistema que eles possuem pode fazer o que deveria com rapidez suficiente) fazem o oposto de reduzir a utilização do sistema para um número único independente da carga de trabalho : eles precisam observar quais são os gargalos para aquela carga de trabalho específica (ou o intervalo necessário de cargas de trabalho) e, em seguida, atribuir os recursos adicionais necessários – e o "tempo de CPU" é apenas um desses recursos.

    • 2

relate perguntas

  • Quantas CPUs eu tenho e quantos trabalhos devo enviar?

  • Definir limites na utilização do núcleo da CPU no Linux

  • Como uma CPU sabe que há IO pendente?

  • Tempo de execução total da máquina

  • Por que contagem de CPU diferente de nproc e nproc --all no contêiner OpenVZ?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve