Em sistemas multicore modernos, por que o sistema operacional não permite que o usuário decida qual núcleo usar para qual aplicativo?

-1

Não seria eficiente para o usuário poder atribuir um determinado núcleo a um determinado aplicativo em sistemas multicore modernos?

    
por Arunabh Das 15.10.2013 / 16:37

2 respostas

5

Em primeiro lugar, a verdadeira resposta à sua pergunta é: por que você deveria se preocupar com o usuário? Os sistemas operacionais são desenvolvidos para utilizar os recursos fornecidos da maneira mais eficiente possível. É improvável, a menos que você tenha requisitos especializados, que sua máquina funcione melhor fazendo esse trabalho por conta própria.

Dito isto, acho que a maioria dos sistemas operacionais lhe dá a opção. No Windows, você pode abrir o aplicativo gerenciador de tarefas, selecionar um processo e uma das opções no menu de contexto é "Definir Afinidade". Isso permitirá que você selecione em quais núcleos o processo será executado.

    
por 15.10.2013 / 16:45
2

Difícil, é diferente em todas as situações.

O agendador de processos / processos em qualquer sistema operacional é muito mais complicado e eficiente do que você e pode reagir a diferentes cargas de trabalho muito rapidamente. O usuário não deve estar ciente de toda a mecânica por trás "como o meu processo está programado", e (minha nota pessoal) por que isso realmente importa para você?

Você corre o risco de deixar 3 núcleos dormindo, com o único núcleo de trabalho agendando 2132121 threads em sua aplicação.

A propósito, se você realmente quiser fazer isso, em qualquer sistema operacional você pode definir a "afinidade da cpu" para cada processo.

No Windows, você pode alterar o núcleo que um processo pode usar em "Gerenciador de tarefas", clique com o botão direito em um PROCESS (não em um aplicativo) e clique em "afinidade".

EDIT: Eu usei uma vez, quando eu tinha um "aplicativo muito importante": em um servidor sobrecarregado, esse aplicativo tinha que executar com alta prioridade, a cada poucos minutos (quando solicitado pelo cliente). Forçamos o SO a atribuir dois núcleos (mais de 8 núcleos totais) exclusivamente a esse aplicativo. Conseguimos o nosso resultado, mas nos 90% do tempo dois núcleos estavam dormindo.

    
por 15.10.2013 / 16:46