Como você está mostrando a utilização da CPU?
Se você usar o gerenciador de tarefas, sugiro usar o Sysinternal Process Explorer. Isso tem uma janela de informações do sistema que você pode abrir, que mostrará um uso total da CPU ou uma caixa de seleção para mostrar a utilização de cada núcleo do processador.
O fato de você citar a cópia de CD e a compactação de arquivos como casos em que a utilização da CPU atinge cerca de 25% SUGERE-ME que a tarefa que você está realizando é limitada por uma única CPU. Por exemplo, a compactação de um arquivo tem desempenho limitado por duas coisas:
- E / S (disco)
- desempenho da CPU
A maioria das compactações não pode aproveitar vários núcleos, porque é uma tarefa inerentemente única = encadeada. Portanto, adicionar mais processadores em paralelo não será mais rápido. E, se você visualizar a utilização do processador de cada núcleo, verá um que fica totalmente vazio e os outros praticamente inativos. Agora, um a 100% e 3 a 0% dão uma média de cerca de 25% - então, isso se encaixa com o que você está vendo.
Da mesma forma, a cópia do CD é limitada pela velocidade com que os dados podem ser extraídos do CD e, em seguida, o que você faz com ele. Se você (por exemplo) converter áudio em MP3 como parte do rasgo, então essa conversão também é muito simples, o que significa que vários núcleos de CPU não serão usados (ou farão o trabalho geral ser feito mais rápido). Seu limite será definido pela velocidade de leitura ou pela velocidade de uma única CPU.
Ele SOBE como o motivo pelo qual você vê 20% - 25% é que os trabalhos em que você faz a medição são limitados a uma única CPU que está sendo executada praticamente plana, os outros estão ociosos porque as tarefas que você está fazendo podem t explorar vários processadores.
Para ver se a utilização total do processador pode aumentar, você precisa executar tarefas que podem explorar várias CPUs. (Claro que ninguém te diz se o programa deles faz isso ou não.)
Para pegar um ponto levantado por uma das outras respostas aqui: Alguns problemas são passíveis de paralelismo e se um programa (para esse problema) for escrito corretamente, pode explorar várias CPUs. E alguns problemas não podem explorar tal paralelismo. Tenho certeza, por exemplo, que a compactação no estilo LZ, usada em todos os arquivos comuns do tipo zip, faz o CANT explorar o paralelismo porque o algoritmo precisa ler o arquivo de origem sequencialmente para criar o arquivo compactado. O processamento sequencial como este não pode ser facilmente distribuído por vários encadeamentos (em que os encadeamentos podem ser alocados para processadores físicos).