Existe uma maneira de ter uma máquina virtual com apenas um núcleo e usar três núcleos na máquina host? [duplicado]

18

Sou co-proprietário de um servidor Minecraft que está ficando bastante grande a cada dia, mas à medida que nos tornamos maiores, estamos correndo para os limites do Minecraft e da maneira como ele é codificado. O jogo não está codificado para usar vários núcleos, em vez disso, ele usa apenas um núcleo. Então, conversando com um amigo, ele sugeriu ver se era possível ter uma máquina virtual com apenas um núcleo virtual, mas usar três dos quatro núcleos na máquina host. Eu fiz algumas pesquisas e não consigo encontrar nenhuma resposta. Não importa se o sistema operacional do host é Windows ou Linux, estou curioso para saber se isso pode ser feito.

Se isso pode ser feito ou feito automaticamente, você pode fornecer links para que eu possa ler sobre isso e aprender mais ... Eu sou novo em máquinas virtuais, então vá fácil.

    
por bradleyhilton 17.10.2011 / 07:57

5 respostas

8

A partir de hoje, todas as respostas parecem estar corretas: não há como fazer isso.

Eu gostaria de acrescentar um pouco de carne a essas declarações:

Wikipedia em "paralelização automática".

Paralelização automática seria o processo para obter um determinado algoritmo serial e tentar encontrar sequências de comando que pudessem ser executadas em paralelo, agendando e despachando essas seqüências para os recursos disponíveis (hardware: cpu) e juntando o resultado ( = data) de volta para processamento adicional.

O problema não é apenas encontrar sequências que não dependem umas das outras e, portanto, podem ser trabalhadas em paralelo. Mas também a sobrecarga de comunicação pode se tornar proibitiva. Pense no seu problema particular em que o mundo do Minecraft vai ser dividido de alguma forma nos diferentes processadores: se você dividir o mundo geometricamente, digamos: = 9 blocos, então nas fronteiras os submundo individuais precisam trocar qualquer coisa. modificações mundiais ou movimentos de habitantes.

Embora a abordagem acima seja típica de "dividir e conquistar", e a divisão geométrica de um problema seja uma solução generalizada para a paralelização, ela é normalmente codificada manualmente, usando o conhecimento do designer de problemas - neste caso - o desenvolvedor do jogo.

Sua idéia proposta envolveria alguma automação de um algoritmo que é completamente desconhecido, porque o servidor virtual "hiper" não tem como saber como o Minecraft se comporta internamente. Portanto, o único ângulo para esse problema é o código de montagem executado. Neste nível baixo, é muito difícil - e atualmente parece impossível - chegar a uma solução que tenha algum mérito.

Google pode procurar publicações científicas hoje em dia. E se você estiver realmente interessado, eu olharei para as publicações sobre conferências relacionadas. Organizações como o IEEE e o ACM pode ser um bom ponto de partida para isso.

    
por 17.10.2011 / 13:16
38

Nove mulheres são incapazes de produzir um bebê em um mês. Desculpe, pelo menos por enquanto, é impossível unir as CPUs no ambiente da VM. Mas essa é uma ideia interessante!

    
por 17.10.2011 / 09:04
8

Não. Ponto. Você não pode magicamente fazer um super-núcleo de núcleos físicos. O Hyper-Visors não pode exigir seu núcleo.

    
por 17.10.2011 / 08:07
6

Não, não há hipervisor (pelo menos que eu saiba) que pode ser feito. pegue duas CPUs de 2 GHz e crie uma CPU virtual de 4 Ghz.

    
por 17.10.2011 / 08:15
4

Não.

    
por 17.10.2011 / 08:06