ITF Portal - Banner Topo
Slot: /23408374/itf-ad-banner-topo
720x300, 728x90, 728x210, 970x250, 970x90, 1190x250

Entendendo melhor (ou lamentando) o uso atual do multicore

Este texto é um pouco especulativo. Quero dividir com os leitores algumas observações que fiz e que me permitiram descobrir fatos interessantes sobre o uso do diversos núcleos existentes nos processadores atuais. Tirei algumas conclusões que podem ser aprimoradas com os comentários e conhecimentos de cada um de vocês. É fato conhecido que o estágio […]

Publicado: 14/05/2026 às 01:17
Leitura
7 minutos
Entendendo melhor (ou lamentando) o uso atual do multicore
Construção civil — Foto: Reprodução

Este texto é um pouco especulativo. Quero dividir com os leitores algumas observações que fiz e que me permitiram descobrir fatos interessantes sobre o uso do diversos núcleos existentes nos processadores atuais. Tirei algumas conclusões que podem ser aprimoradas com os comentários e conhecimentos de cada um de vocês.

É fato conhecido que o estágio de evolução do software no que diz respeito ao bom uso dos múltiplos núcleos é mais atrasado do que se desejaria. Servidores e aplicações corporativas usam bem vários núcleos há bastante tempo. Mas com vários núcleos “caindo no colo” dos usuários comuns, a história é outra. Pentium Dual Core, Core 2 Duo, AMD X2, Phenom, Intel Quad Core, Centrino Duo, Turium, estão aí a nossa disposição. E o assunto é mais do que oportuno, pois agora já se começa a discutir inclusive o uso de GPUs além das CPUs para acelerar aplicativos comuns. Nvidia já fala em Acrobat e Premiere, além de Photoshop acelerados por GPUs, mas isso já é outra conversa. Quero discutir o uso das múltiplas CPUs e como os programas a utilizam.

Peguemos o velho e bom SUPERPI que é usado por muitos como referência para avaliar a força bruta computacional dos processadores. Campeonatos de overclock usam o SUPERPI como medida de velocidade. Porém este afamado programa é monocore. As telas abaixo mostram o uso do SUPERPI em um Centrino Duo (Core Duo T2300).

[singlepic id=8130 w=320 h=240 float=]

[singlepic id=8126 w=320 h=240 float=]

A partir do meio do gráfico o SUPERPI começou a ser processado. Veja que o sistema mostra uso de CPU beirando os 100% nos dois cores. A partir disso deduzo que o programa sendo monocore mesmo assim o sistema operacional fica alocando ora um, ora outro processador,dando a impressão de que ele “usa” os dois. Que usa, usa, mas não ao mesmo tempo. O gráfico não tem granularidade suficiente para mostrar os chaveamentos entre as CPUs.

Mas ainda não estava satisfeito. E se eu forçar o SUPERPI a usar somente uma das CPUs? Isso é fácil de fazer. No gerenciador de tarefas existe uma opção de nome estranho chamada AFINIDADE. Afinidade para mim é o que se sente por um bom amigo e não algo a ver com processador. Mas em todo caso usando o tal recurso eu limitei o SUPERPI a usar somente um dos cores.

[singlepic id=8128 w=320 h=240 float=]

Estava muito curioso para saber se isso iria afetar o desempenho de alguma forma. Não afetou nada. O tempo para calcular nesta máquina o PI com dois milhões de casas decimais permaneceu em 96 segundos. É provável que haja uma diferença, mas irrisória e não mensurável na casa dos segundos (talvez décimos ou centésimos de segundos), pois afinal a alocação da CPU para o processo é fixa,não precisa ficar alternandoa cada “time slice” do processador. O gráfico abaixo mostra bem esta mudança. Veja que a partir do primeiro terço do diagrama somente o primeiro core ficou em uso, e 100% de uso, enquanto o outro ficou bem mais baixo, ocupado com outras tarefas que não o SUPERPI.

[singlepic id=8127 w=320 h=240 float=]

Mas e se usarmos programas prontos para multicore? E se usarmos mais cores? Para responder a esta pergunta eu usei o software Pinnacle Studio 11, software para edição de vídeo em um PC com processador Quad Core (Q9400 2.66 Ghz). Esta experiência foi interessante, pois me fez enxergar uma série de coisas que não sabia, nem sequer imaginava.

Apesar do programa Pinnacle Studio usar vários núcleos do processador, isso não acontece em todos os momentos. Explicando melhor, não acontece em todas as funcionalidades do programa. Exemplificando, codificar vídeo é de longe uma das tarefas mais CPU intensivas que existe. Ao escolher codificar certo vídeo no formato MPEG2 o sistema demorou cerca de 25 minutos. Ao fazer a mesma operação usando o formato DVIX o tempo gasto foi um pouco menos da metade!!! Esta imensa diferença em minha opinião não poderia ser só por causa do CODEC DVIX ser mais eficiente. Afinal ambas as conversões foram feitas pelo mesmo programa, o Pinnacle Studio. Ao olhar o gerenciador de tarefas ao fazer a conversão em MPEG2 o uso da CPU não passava de 50% em todos os quatro cores. Com a lição aprendida com o SUPERPI, deduzi que o codec MPEG2 só usava dois cores e o sistema operacional dividia esta carga pelos quatro núcleos mas somente dois de cada vez. Ao observar a mesma coisa enquanto gravava o vídeo em DVIX percebi que a CPU total ficava em 100%. Inferi por isso que os quatro cores estavam em uso e por isso o tempo de cododificação era muito mais baixo.

Mas controlar como este núcleos são usados não é tão simples assim. Tentei fazer com o Pinnacle Studio a mesma coisa que fizera com o SUPERPI, ou seja, alocar somente um processador para o programa e ver o reflexo do tempo de codificação. Minha tentativa foi infrutífera. Veja a tela abaixo.

[singlepic id=8129 w=320 h=240 float=]

Vejam que no começo do gráfico os quatro cores estavam próximos dos 100% de uso. Aproximadamente na metade do gráfico foi quando eu mudei a AFINIDADE do processo/programa Pinnacle Studio dedicando somente o processador 1 (na verdade CPU 0) para o programa. Durante um breve momento somente o primeiro core ficou a processar a conversão para DVIX, mas alguns segundos depois os outros três cores voltaram a funcionar a plena carga. Algo dentro do próprio programa deve impedir que a AFINIDADE seja alterada, ou talvez o próprio programa fique constantemente reajustando a AFINIDADE para usar o número máximo de núcleos disponíveis. Vejam, aqui tudo que digo é especulativo uma vez que não tenho certeza disso e por isso peço a ajuda e colaboração dos amigos do FORUMPCs a dar as suas opiniões.

Isso mostra para mim que há ainda um longo caminho a ser percorrido no desenvolvimento de softwares para que os vários núcleos sejam bem aproveitados. Isso não é novidade. Mas com o Intel Nehalem batendo às nossas portas, processadores “populares” com 4 núcleos largamente disponíveis, eu me questiono o quanto devemos cobrar dos desenvolvedores de sofware um trabalho bem feito nesta área. E não se surpreendam se em dois anos (2010) estivermos falando de processadores de 8 núcleos para desktops!! A escalada dos gigahertz acabou. A única forma viável de ser obter mais desempenho na tecnologia ATUAL é com a agregação de mais e mais núcleos. Mas se os softwares não estiverem devidamente preparados, qual será o benefício real??? Se dentro de um mesmo programa uma função é executada por dois núcleos e outra por quatro, o que esperar? E ainda há uma infinidade de programas que ignoram vários processadores!!! Acho que vamos ter que “gritar” um pouco!! Senão chegaremos a 2010 com PCs usando processadores de 8 núcleos e o desempenho para as tarefas do dia a dia pouco diferente, ou quase igual ao desempenho que temos hoje!!

As melhores notícias de tecnologia B2B em primeira mão
Acompanhe todas as novidades diretamente na sua caixa de entrada
Imagem do ícone
Notícias
Imagem do ícone
Revistas
Imagem do ícone
Materiais
Imagem do ícone
Eventos
Imagem do ícone
Marketing
Imagem do ícone
Sustentabilidade
Autor
Notícias relacionadas