Uma CPU Multi-core pode ser configurada para permitir que o sistema operacional veja os núcleos como uma única CPU

7

Um servidor de CPU Multi-core pode ser configurado para permitir que o sistema operacional veja todos os núcleos como uma única CPU e, assim, permitir que o processador funcione como uma única CPU?

Muitos servidores modernos são CPUs multicore. Eles são maneiras para todos os núcleos de CPU relatar como 1 CPU para o sistema operacional? Isso seria útil para executar aplicativos projetados para uma única CPU.

    
por L. DPenha 01.06.2009 / 21:26

12 respostas

23

O que você está perguntando é

"Posso executar um aplicativo de thread único em uma máquina multi-core e aproveitar todos os núcleos?"

A resposta é: não

Um único aplicativo encadeado só pode ser executado em um núcleo e nunca poderá usar mais recursos do que aquele que um único núcleo pode fornecer.

    
por 01.06.2009 / 21:36
4

Você está dizendo que com um processador de 4 núcleos de 4 GHz você quer que o sistema operacional o veja como um processador central de 12 GHz? Se for esse o caso, então não, você não pode fazer isso.

A menos que o aplicativo seja especificamente escrito para exigir acesso à CPU0 (e eu nem tenho certeza se isso é uma possibilidade), não importa.

O hardware Toms possui um utilitário para que um aplicativo tenha afinidade por uma CPU específica quando iniciado. Eu não tentei, então leve para o que você quiser. Pode ser encontrado aqui

    
por 01.06.2009 / 21:41
3

como eu entendo que você deseja transformar cpu dual core para um cpu que seria [da perspectiva de único aplicativo thread] duas vezes mais rápido que cada um dos núcleos. infelizmente isso não pode ser feito. O mais próximo disso é a idéia implementada no CPU i7 da Intel, que pode fazer um overclock inteligente de um dos núcleos, se eles verem que ele é mais carregado, enquanto os núcleos do oder estão ociosos.

    
por 01.06.2009 / 21:37
2

Se um aplicativo só pode usar uma CPU, será assim mesmo. Não importa quantos estão presentes.

O sistema operacional verá todas as CPUs ativadas, mas deverá ser capaz de separar o núcleo por exemplo, por exemplo (por exemplo, a afinidade do SQL Server). Mas não, você não pode fazer um 4 núcleos aparecer como um para o sistema operacional que eu conheço.

    
por 01.06.2009 / 21:35
1

Dependendo do BIOS, você pode desativar todos os núcleos, com exceção de um, mas perderá uma grande parte do desempenho. Você também pode definir programas para serem executados em um único núcleo.

A criação de uma máquina virtual com um único núcleo também forneceria uma solução.

    
por 01.06.2009 / 21:31
1

Em relação ao uso de VMs para resolver esse problema: O ponto seria usar tantas VMs de núcleo único quanto os núcleos físicos no sistema. Em seguida, execute uma única instância do aplicativo em cada VM. Isso resultará na execução de cada instância individual um pouco mais lenta do que se fosse executada sozinha no sistema operacional host; no entanto, permitirá muito mais paralelização da carga de trabalho.

Isso tudo presume que seu ambiente e código permitirão várias instâncias desse aplicativo e que você poderia dividir a carga de trabalho em partes para as instâncias.

Concedido, a melhor maneira de fazer isso seria reescrever o aplicativo para ser multithread; no entanto, muitas vezes isso pode ser impraticável em termos de horas de trabalho do desenvolvedor.

    
por 01.06.2009 / 22:56
1

AMD REVERSO HYPER-THREADING!

link


(Spoiler: não existe.)

    
por 14.08.2009 / 01:36
0

Como foi perguntado em um comentário pelo OP, que tal executar o sistema operacional e o aplicativo em uma VM? Isso essencialmente seria o mesmo que fingir uma CPU mais rápida?

Em suma, não. A virtualização é capaz de trabalhar rapidamente somente quando pode executar as instruções de SO e aplicativos na CPU nativamente. Em teoria, é possível reescrever as instruções de entrada para melhor utilizar várias CPUs, mas isso provavelmente falhará em todas as tarefas, mas muito simples. Como você sabe que não está executando as insturções para enviar dados, mas os cálculos nesses dados ainda não foram finalizados?

Esta é uma das razões pelas quais as aplicações precisam ser escritas e compiladas especificamente para operação multithread.

    
por 01.06.2009 / 22:48
0

Como Sage disse, se você quiser ver uma grande cpu em vez de múltiplos núcleos, então não. Pelo menos, não que eu saiba.

No Linux, no entanto, você pode desativar temporariamente um núcleo da seguinte forma:

echo 0 >> /sys/devices/system/cpu/cpu1/online

Seu desempenho vai sofrer, porque agora tudo que está rodando no sistema estará rodando em qualquer núcleo que tenha sobrado.

    
por 01.06.2009 / 23:44
0

Eu tenho pensado sobre isso mesmo. Eu acho que seria possível conseguir isso em CPUs multi-core atuais se uma VM usasse um processador emulado que pudesse espalhar sua largura de bit em todas as CPUs físicas em sincronia. Por exemplo, você pode fazer um chip de segmento de 3 Ghz 8 core 16 para o sistema operacional e programas em execução na VM como um chip 6 Ghz 4 Core 8 Thread ou um chip de 12 Ghz 2 Core 4 Thread. Não conheço essa VM, mas é provável que isso possa ser feito (com algumas reduções de IPC da CPU física, obviamente).

Quanto a um chip projetado para fazer isso, não há nenhum, mas se um design permitisse a conexão física da largura de bit conectando os núcleos para aceitar instruções ao longo de toda a largura por ciclo, você poderia fazer isso sem usar uma VM e um menor hit no IPC.

Muito surpreso nenhuma empresa de hardware ou software como a VM Ware, a Intel ou a AMD tentaram descobrir como fazer isso, considerando o atual estado das coisas no mercado de CPU. Imagine não ter que escolher entre uma CPU de jogos velozes ou uma CPU multi-core monstruosa com todas essas pistas PCIe extras ... você poderia então simplesmente alterar o modo da CPU quando estiver usando um programa que não utiliza muitos threads de CPU. Em seguida, ele retira a pressão dos desenvolvedores, se as CPUs puderem fazer isso, haverá menos necessidade de encadear o aplicativo. As VMs já podem aparecer como mais núcleos do que a sua CPU física com um imposto pesado sobre IPC, precisamos de algo que possa fazer o contrário, o desempenho de muitos programas ainda se beneficiaria muito se você pudesse fazer o que é perguntado neste tópico.

    
por 15.06.2017 / 07:59
0

A AMD há alguns anos tinha o software Core Control que mesclava os núcleos para aumentar a velocidade do clock. O usuário foi limitado em combinações de núcleo, eu costumava executar meu núcleo 6 em 2 núcleos fundidos e foi capaz de obter até 4,2 relógios da base 3,2

    
por 05.10.2017 / 02:55
0

Ok ... vamos fingir que somos muito ricos e recebemos o maior processador de todos os tempos no momento deste post. O Intel I9 7880X com 18 núcleos. Como posso amarrar todos esses núcleos em um processador? A resposta rápida é que você não pode.

A melhor maneira de explicar é o seu processador é uma sala com 18 pessoas dentro. Você não pode combiná-los em uma pessoa. O programador do software tem que configurar o programa para usar mais núcleos. A maioria dos programas usa apenas um núcleo. Então o problema terá esse núcleo fazendo 1 tarefa de cada vez.

Alguns programas sabem quais serão as próximas tarefas, então eles designam mais núcleos para executar mais funções, mas, até onde sei, no momento deste post, o máximo que qualquer software MAINSTREAM usa são 4 núcleos. Existem vários programas speicalty que usarão todo o seu processador.

    
por 06.10.2017 / 15:45