Definindo afinidades centrais da CPU de processos permanentes no Windows

5

Estou planejando adquirir uma nova CPU e estou olhando para um quad-core i5.

A razão para o quad-core é que eu geralmente faço várias tarefas, por exemplo, executando o Visual Studio, o Eclipse Aptana, o Photoshop, o Lightroom e vários navegadores Chrome de uma só vez.

  1. Eu estou querendo saber se é possível alocar certos processos como o Visual Studio permanentemente para usar um núcleo específico, e existe uma ferramenta melhor do que o Gerenciador de Tarefas do Windows para conseguir isso?

  2. Isso me proporcionará uma experiência multi-tarefa mais rápida ou não notarei os efeitos?

  3. Eu também estou pensando em migrar para 8GB de 3GB, já que experimentei uma surra severa depois de algumas horas de desenvolvimento da Web com vários IDE abertos e usando as ferramentas de desenvolvedor do Chrome. A RAM adicional será suficiente ou precisarei de uma CPU mais rápida? (atualmente executando o Core 2 Duo E6750 @ 2.66ghz)

por vaughan 12.07.2010 / 12:45

2 respostas

3

Geralmente, você não notará os efeitos de colocar processos específicos em núcleos específicos, já que o Windows geralmente é muito bom em agendar itens entre os núcleos, especialmente no Windows 7, que foi projetado pensando nisso.

Descobri que, em geral, uma tarefa ocupada gastará muito (geralmente > 60% para aplicativos normais e > 95% para jogos segmentados únicos) de seu tempo em um núcleo e o Windows agendará outras tarefas em outros núcleos as coisas ficam mais ocupadas, então eu não me preocuparia com isso. Eu pareço lembrar de ler que o windows 7 é capaz de dizer quais núcleos são "preferidos" em um sistema, portanto, em um sistema Intel que usa seus Turbo Boost (que usa a atividade no primeiro núcleo para saber se precisa aumentar) e Hyperthreading, então o Windows tenderá a agendar tarefas de thread único no primeiro núcleo e então tarefas multithread serão preferencialmente atribuídas ao núcleos "reais" antes dos núcleos "virtuais" hyperthreaded. Eu vi isso no trabalho no meu i7 (quad-core, 8 hyperthreaded núcleos) e funciona muito bem com jogos quase exclusivamente usando o primeiro núcleo e, em seguida, uso moderado nos núcleos "reais" alternativos.

A única vez que eu acho especificando a afinidade é útil quando assisto a vídeos usando certos players de mídia que são multiprocessados, mas parecem ter problemas de tempo. Media Player Classic Hometheater Edition parece "pular" bastante quando você começa a pular para frente em um vídeo, presumivelmente porque ele está usando múltiplos threads para decodificar e eles não são bem sincronizados entre os núcleos e, nesse caso, defini-lo para usar apenas uma CPU pára o salto.

Caso você precise alterar a afinidade da CPU, há algumas ferramentas:

Runfirst ajuda a corrigir programas antigos, certificando-se de que eles sejam executados somente na primeira cpu disponível no sistema .

Esta revisão no Toms Hardware tem uma ferramenta que atribuirá tarefas automaticamente afinidades para você, mas o link que eles têm parece estar quebrado, e parece ser um pouco difícil de encontrar nos dias de hoje. Eu acho que este programa tem que ser mantido em execução o tempo todo que você quer que ele atribua afinidades. Parece que você pode conseguir o aqui

Em geral, eu não acho que você verá qualquer benefício real em atribuir manualmente afinidades e eu acho que a prática praticamente desapareceu conforme o software ficou melhor.

Espero sinceramente que 8 GB de memória RAM sejam mais do que suficientes para atender às suas necessidades, mas não tenho experiência real com as ferramentas que você está usando. Eu posso dizer que em um sistema de 6GB eu nunca tive o sistema se sentir lento devido ao disco rígido debulhar quando eu tenho executado várias máquinas virtuais e um IDE (eclipse) em execução ...

    
por 12.07.2010 / 13:09
1

Atribuir afinidades de CPU a executáveis específicos é uma má ideia. Definir afinidade em um processo não reserva uma CPU para esse processo especificado, bloqueando todos os outros processos dessa CPU. Diz apenas que esse processo só pode usar a CPU designada.

Isso é um problema porque há muito mais processos precisando de tempo de CPU do que aqueles que você normalmente conhece. Se você usa afinidades para ligar um processo, CPU 0, e outra coisa é usar CPU 0 quando seu processo precisar de CPU, seu processo não pode ser executado até que algo seja feito com CPU 0.

É muito melhor correr em algum lugar do que em nenhum lugar, e correr para lugar nenhum é um resultado comum de estabelecer afinidades.

Outro resultado horrível de configurar a afinidade em um processo para uma única CPU é que você limita todos os threads desse processo à CPU. Assim, matando qualquer vantagem de desempenho que multithreading poderia ter tido.

Em suma, apenas deixe o agendador do Windows fazer sua parte. Quanto menos opções você tiver, mais difícil será o trabalho.

    
por 06.10.2016 / 00:35