Por que meu processador não opera com seu potencial máximo mesmo quando meu aplicativo (que utiliza recursos da CPU) está atrasado?

26

Por que minha CPU nunca atinge o máximo, mesmo quando meu aplicativo consome 40% da CPU (mas 30 a 40% da CPU ainda permanece inativa), sendo lento?

Isso significa:

  1. Há uma maneira de forçar a CPU a ser executada a 100%
  2. As CPUs
  3. são fabricadas dessa forma e a única coisa que posso fazer é adquirir um novo hardware.
  4. A limitação está na aplicação e o atraso não melhora mesmo com melhor CPU. (Assumindo que o aplicativo é perfeito, o que estou perguntando é se o software é executado dessa maneira?)
  5. Outra coisa.
por Nhu Thai Sanh Nguyen 02.11.2017 / 12:45

6 respostas

93

Você provavelmente está executando aplicativos de encadeamento único que podem maximizar apenas um único núcleo da CPU. Como 100% de um núcleo é inferior a 100% da capacidade do CPU multi-core, a utilização da CPU total não atinge 100%.

Você pode confirmar isso visualizando a utilização do núcleo individual no Gerenciador de Tarefas. Procure por núcleos únicos que estão se aproximando da utilização máxima.

    
por 02.11.2017 / 12:51
49

Você não especificou seu sistema operacional. Então a resposta será comum como.

Os aplicativos podem ser limitados por vários motivos. O gargalo pode estar em:

  • CPU
    • baixa velocidade
    • aplicativos de thread únicos / baixos (não são capazes de usar todos os núcleos / threads)
  • I / O
    • taxa de transferência de disco
    • latência de disco
    • taxa de transferência de rede
    • latência de rede
  • memória
    • capacidade
    • throuthput
    • latência
    • cache insuficiente
    • localidade (NUMA)
    • trocando

E há mais motivos, que não são tão comuns.

Então, dê uma olhada nos recursos do sistema e tente analisar seu sistema em busca de outros gargalos, do que apenas a carga total da CPU.

    
por 02.11.2017 / 12:56
11

Em geral, quando as pessoas falam que o computador está lento, menciono poeira. Como um ex-técnico de computadores com 15 anos de experiência profissional, descobri que simplesmente expelir poeira pode melhorar significativamente o desempenho.

Não estou falando de uma quantidade fina e quase imperceptível de poeira, mas sim de grandes aglomerados ou mesmo de esteiras que impedem o fluxo de ar normal. Eu vi dissipadores de calor que tinham basicamente um filtro sobre eles que era poeira, em vez de um filtro real. Isso bloqueia uma quantidade muito significativa de ar de resfriar a CPU. Remover poeira como essa tende a acalmar os ventiladores instantaneamente e permitir que seus componentes sobrevivam por mais tempo. O calor havia matado muitos computadores que me pediram para consertar.

Acompanhando a ideia de problema de calor, você também pode tentar uma melhor pasta térmica. O cr @ p branco que a maioria dos processadores vem com é como o Yugo de pasta térmica. Eu uso o Arctic Silver, mas há coisas melhores que isso. O Arctic Silver é sobre um Porche (usando a escala de classificação de carros), mas existem variedades de supercarros e da Ferrari por aí.

Os processadores tendem a desacelerar quando estão superaquecendo. Isso é uma coisa física, assim como uma "auto-preservação" programada em muitas CPUs. Eu não sei se ainda vai mostrar 100% no Gerenciador de Tarefas ou se ele vai mostrar 40% (como você vê), mas pode ser uma desaceleração significativa, enquanto a CPU tenta deixar o dissipador de calor e ventilador " recuperar. "

Outra coisa que pode estar diminuindo o seu processador é a GPU. Se você estiver executando jogos ou utilitários gráficos intensivos (como o CAD), sua GPU pode estar atrasando sua CPU. Conseguir uma placa de vídeo melhor pode ser algo para se olhar. Além disso, usar a carta errada pode estar atrasando você. As placas de jogos não são (geralmente) projetadas para funcionar com CAD, assim como placas de estação de trabalho, e as placas de estação de trabalho (geralmente) também não funcionam muito bem. Alguns fazem, mas a maioria não faz isso.

Como o @Jaroslav Kucera mencionou, ele pode estar relacionado ao disco. Bater muito no (s) HD (s) pode diminuir sua velocidade. Eu normalmente executo várias unidades. Um dedicado ao SO e outro (s) para software, arquivo de paginação do Windows, arquivos pessoais, etc. Além de não se preocupar tanto com o backup de dados pessoais em caso de falha do sistema operacional, ter múltiplos HDs aumenta consideravelmente a carga de trabalho. Ler e gravar no mesmo disco ao mesmo tempo pode retardar seriamente o HD. O uso de SHDs pode atenuar isso, mas não totalmente. O Photoshop e o software de edição de vídeo são conhecidos por atingir os discos rígidos. A leitura de um HD, em seguida, a saída para um segundo HD é o caminho a percorrer. Isso também ajuda a vida dos seus HDs. Eu também vou com resfriamento ativo em meus HDs. Eu não matei um disco rígido desde que coloquei um ventilador e um dissipador de calor neles há 15 anos atrás. Google eles, eles são seguros baratos.

Acredite ou não, o seu PSU pode estar atrasando você também. Se você não tiver energia suficiente (ou se sua PSU for antiga ou um PDV chinês mais barato, mais classificado), você poderá ter problemas de desempenho. Eu vi em primeira mão o que estranho sistema operacional emite um PSU escamosa pode fazer. Você está procurando voltagem, bem como amplificadores, portanto, verifique se todos eles correspondem às especificações da fonte de alimentação, se você seguir esse caminho, e também certifique-se de que eles atendam ou excedam suas necessidades de energia. Se seus componentes totalizam 500 watts e você está dando a eles até 475, isso é ruim. Eu recomendo ir acima de seus requisitos em cerca de 20%, assim como seu PSU fica mais velho (e libera energia) e seus outros componentes envelhecem (e exigem poder de mote), você não está preso comprando um novo PSU tão rapidamente.

Incluindo as outras respostas aqui, ainda há mais motivos para o seu computador ficar lento. Exceto pela opção PSU, o que eu falei foi muito comumente visto quando eu era um técnico de informática. Fazer um teste de referência e outros testes é a única maneira de descobrir as coisas. Trocar partes pode nem mesmo resolver o problema se for uma combinação de várias partes causando a lentidão.

E, AFAIK, não há como forçar seu computador a usar 100% do processador. A CPU e o sistema operacional sabem o que precisam fazer e são realmente bons em seus trabalhos, geralmente. :-) Eu não acho que alguém tenha descoberto uma maneira de forçar uma CPU a rodar a 100% quando você acha que deveria. Pelo menos não sem alimentar o lixo extra para fazer com que a porcentagem "pareça boa".

Com você vendo 40% e não e uma divisão de 100% (como 25%, 33% ou 50%), tenho a sensação de que não é um problema único de segmentação. Pode ser, mas não é para onde minha mente vai. +1 para o @Twisty Impersonator por ter mencionado isso imediatamente.

Boa sorte tentando descobrir isso! Eu passei dias tentando descobrir esse tipo de coisa, apenas para acabar substituindo a maioria das tripas como um "último recurso".

    
por 02.11.2017 / 18:52
2

Pode haver configurações de economia de energia no BIOS ou no sistema operacional. Muitas CPUs e placas-mãe modernas têm configurações para permitir que a CPU seja mais econômica com o uso de eletricidade (especialmente para laptops que desejam que a bateria dure). Provavelmente você pode desativar essa configuração, mas certifique-se de saber o que está fazendo, já que ao lado da configuração geralmente há outras coisas que podem afetar a funcionalidade do computador de outras maneiras importantes.

    
por 04.11.2017 / 16:56
1

Sem conhecer as especificidades do seu programa, é difícil dizer, mas como outra resposta examina a possibilidade de o aplicativo ser de thread único, analisarei o aplicativo como se ele estivesse usando multithreading adequado.

Uma coisa comum que é negligenciada é a de núcleos físicos versus "núcleos hyperthreaded". Hyperthreading se destaca em muitas tarefas curtas com gargalos que não sejam CPU. Para tarefas com gargalos apertados em CPU, você ainda é limitado pela contagem de núcleos físicos, que geralmente é metade da contagem de núcleos com hyperthread. Na pior das hipóteses, o gerenciador de tarefas pode mostrar apenas 50% de uso porque conta os núcleos com hyperthread em seus gráficos, quando, na realidade, seus núcleos físicos podem estar a 100% de uso. Geralmente, você mostraria mais do que isso, já que seu sistema operacional poderá usar o hyperthreading para outras tarefas não relacionadas.

    
por 03.11.2017 / 17:31
1

Atinge 100% de utilização regularmente ao realizar tarefas de renderização e matemática. Vou verificar que o hyperthreading atingirá 100%, e a ordem das instruções é um grande negócio. A Intel e a AMD possuem grandes quantidades de hardware dedicadas à reordenação de instruções para preencher o máximo possível de núcleos de execução. Se você está recebendo 30% em uma máquina moderna, você pode

  • Verificar Temps - Intel & AMD ambos downclock quando ficam quentes e mostra como gagueja e picos.
  • Não vai fazer muito com isso .... exemplos são:
    1. Navegação na Web
    2. E-mail
    3. Jogos mais simples
    4. Quase garanto que seu problema é um ou todos os seguintes, começando no topo:
  • Obtenha um SSD
  • Obtenha um SSD
  • Obtenha seu sistema operacional no SSD e mova os dados normais para uma unidade multi-TB tradicional. O Windows precisa de mais acesso a seus arquivos locais do que qualquer coisa.
  • Bonazai Buddy?
  • Mantenha todas as unidades acima de pelo menos 10% da capacidade. O NTFS é um sistema de arquivos de registro em diário e o desempenho diminui ao máximo fica.
  • Você precisa de uma unidade NVMe / SSD para sua unidade de sistema operacional o mais rápido possível (sim, eu disse isso de novo). O desempenho é incrível, e continua para a parte dois isso ... Um grande varejista estava vendendo drives Samsung 961 NMVe 512GB por US $ 300 hoje, que é suficiente para uso normal.
  • O Windows 10 é pesado em GPU. Uma placa de vídeo dedicada e barata pode tirar a carga da memória e da CPU. Você ainda pode usar o APU em combinação com a placa de vídeo, mas você vai economizar um pouco de RAM, e VRAM é geralmente muito mais rápido.
  • CPUs com contagem de núcleo mais baixa também são ligadas à memória. Se você olhar para os i7s eles estão todos rodando DDR de canal quádruplo em 4 bancos. Epyc da AMD os chips serão de 8 canais DDR5 com 64 núcleos. Não ajuda. Finalmente, e eu não posso enfatizar isso o suficiente, despeje o dinheiro na quantidade de memória RAM que sua máquina irá receber. Eu tenho 32GB e estou comprando 32 mais tarde este ano. O Windows faz algo semelhante ao superfetch isso é um pouco mais novo que comprime a memória na RAM que não está sendo usado para que programas e dados possam ser descompactados quando necessário. Como outro exemplo eu executo uma VM Linux para desenvolvimento, alocada 6/12 núcleos e 16GB de RAM, e após o primeiro carregamento do SSD começa em ~ 3 segundos. CPU é considerado muito barato nos dias de hoje por otimizações como essa ... descompactando o Photoshop da memória é mais rápido do que o carregamento do disco, exceto no caso de um SSD muito rápido.

Tudo isso parece um exagero até que eu esteja preso ao compilar um projeto de arquivo de 70k ou fazer upscaling de arquivos raw de câmera gigante para 17 "x26" x600 dpi em cores de 16 bits. Mesmo com 100% de utilização, os recursos são tão exagerados que você não fica lento. Na outra noite eu percebi que tinha duas VMs e um Wolf 2 carregado junto com 2 IDEs (estou distraído, me processe) e não estava percebendo lentidão. Esta é uma máquina de US $ 1500 BTW, nada de especial, e mais lentamente comprou ao longo dos anos. Metade disso é uma das Radeon RX64s porque minha placa de vídeo tinha 6 anos de idade. Enorme diferença em render e tal. A atualização provavelmente tirará mais proveito do seu hardware do que supondo que seu uso de 30% é tudo que você obterá.

Se eu jogasse um disco rígido de 5400 RPM nesta máquina para o SO, ele rodaria como uma porcaria total.

TL; DR soa como se você estivesse ligado à CPU agora. Gaste 200 unidades em pelo menos um SSD de 256 GB para o sistema operacional, 8 GB de memória RAM e um cartão de jogador final inferior, e o computador durará anos. Este sobreviveu por 6 anos antes que eu finalmente fizesse um processador e o Mobo atualizasse e eu estava compilando uma suíte inteira de compiladores cruzados cerca de 25 vezes por dia com o equipamento antigo.

Me chame de exagero, mas não estou recomendando 8 cartões Tesla ou qualquer coisa. :-) Faça upgrades menores quando puder e acho que você resolverá muitos desses problemas. Eu fiz anos atrás adicionando um SSD a um sistema Q6600 e observando o desempenho triplo.

    
por 06.11.2017 / 11:33