Como a variável env NUMBER_OF_PROCESSORS é gerada?

Como a variável env NUMBER_OF_PROCESSORS é gerada?

Tenho alguns HP BL460Cs que estão sendo testados para determinar com qual processador queremos usar quando começarmos a atualizar nosso equipamento, e há um problema com essa variável de ambiente em um deles.

O blade está executando o Windows 7 Enterprise, e a variável NUMBER_OF_PROCESSORS relata 14 processadores, mas há dois processadores de 14 núcleos instalados na máquina, então devemos ver o dobro desse número. Consegui verificar se ambos os processadores estão instalados e detectados pela máquina via msinfo32 e gerenciador de dispositivos.

Existe algo que pode estar atrapalhando a forma como a variável é gerada? Qual processo o Windows usa para definir esse número? Eu sei que pode ser editado, mas é apenas redefinido após a reinicialização, então isso realmente não ajuda. Qualquer visão que vocês tenham seria imensamente apreciada.

Atualização: Decidi reconstruir a máquina como Windows 2008R2 para ver se isso mudaria ou corrigiria o problema, mas persistiu. Portanto, a configuração tecnicamente incompatível provavelmente não é a causa.

Responder1

Ok... eu estourealmentecurioso por que você deseja executar o Windows 7 nesses servidores em vez das edições do Windows Server. Você pode fornecer mais detalhes sobre o seu ambiente?

Você está usando umHP ProLiant BL460c Gen9servidor com doismuitosofisticadoProcessadores Intel E5-2697v3 de 14 núcleos.

Enquanto a HP fabricavaservidores blade específicos para estações de trabalhoaté a linha Gen8 ProLiant, ainda não há equivalente Gen9.

Neste ponto, suspeito de algumas coisas:

  • O Windows 7 Enterprise pode suportar dois soquetes de CPU e 64 núcleos lógicos, mas você está vendo apenas um soquete de CPUs. Suponho que você espera ver 28 núcleos?

  • O seu sistema está totalmente atualizado do ponto de vista do sistema operacional? Caso contrário, execute todas as atualizações do sistema operacional. Esta é uma nova CPU lançada há algumas semanas em uma plataforma de servidor MUITO nova. Duvido que você encontre outras pessoas com essa combinação de sistema operacional e hardware no momento.

  • Você está atualizado sobre o firmware do sistema? Caso contrário, atualize-o.

  • HPnão pretendiapara que esse modelo de servidor seja usado com o Windows 7, isso eliminaria sua capacidade de executar agentes de gerenciamento de integridade e drivers de valor agregado no hardware.

  • Você pode potencialmente usarDrivers/firmware do Windows 2008 R2para o sistema, mas tudo não é suportado.

Responder2

Pelo que eu sei, $ENV:NUMBER_OF_PROCESSORSé derivado do WMI, usando:Win32_ComputerSystem.NumberOfLogicalProcessors

Para aumentar a confusão, Win32_ComputerSystemtambém informa o número de CPUs físicas como NumberOfProcessors.

Você pode usar WMICo PowerShell para avaliar estes valores:

Get-WmiObject -Class Win32_ComputerSystem|Select NumberOf*

Se sua máquina aparecer NumberOfProcessorscomo apenas 1, você pode ter um problema de hardware ou de ativação de licença, já que apenas as edições Enterprise, Professional e Ultimate do Windows 7 reconhecerão mais de uma CPU física

Responder3

O Windows 7 não é um sistema operacional compatível para execução nesse hardware, o que é uma explicação boa o suficiente para mim sobre por que ele não está relatando corretamente o hardware instalado. As outras razões na resposta de Mathiasem última análise, também pode ser a causa, mas, de modo geral, "configuração não suportada" é uma explicação boa o suficiente para fins de administração de sistemas profissionais.

No que diz respeito aos sistemas Windows, apenas os sistemas operacionais Windows Server 2003 e superiores são suportados nos BL460Cs e, nesse caso, na maioria dos hardwares de servidor HP.

Responder4

Justin, postei um comentário anteriormente, mas não foi visto como uma resposta - no entanto, levou à solução para mim, então repostei abaixo com o funcionamento e a solução para ajudá-lo a entender a lógica do meu cenário, e você pode então julgue se você tem o mesmo.

Boa noite, Justin, vejo o mesmo problema com HP proliant blade bl460c geração 9 windows windows 2012 r2. a geração 8 relatou tudo corretamente. Você encontrou uma solução. Minhas descobertas são 'echo %NUMBER_OF_PROCESSORS%' retorna uma resposta incorreta \ inconsistente em comparação com msinfo32, gerenciador de tarefas e até mesmo Get-WmiObject -Class Win32_ComputerSystem | Número*

O número relatado é 8, o número correto é 16.

Tendo discutido com a HP e a Microsoft, isso parece ser devido aos nós NUMA e à intercalação.

foi resolvido inserindo o bies e definindo a 'intercalação de nós' como desabilitada. depois disso, a variável '%number_of_processors%' retornou o mesmo número de processadores que as configurações lógicas do taskmaster. Então isso resolveu o problema para mim.

para obter mais informações sobre as configurações NUMA, consulte:http://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).aspx

informação relacionada