Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo discute como solucionar o problema de alto uso da CPU no servidor SMB.
Alto uso da CPU devido a problemas de desempenho de armazenamento
Problemas de desempenho de armazenamento podem causar alto uso da CPU em servidores SMB. Antes de solucionar problemas, verifique se o pacote cumulativo de atualizações mais recente está instalado no servidor SMB para eliminar quaisquer problemas conhecidos no srv2.sys.
Na maioria dos casos, você observará o problema de alto uso da CPU no processo do sistema. Antes de continuar, use o Process Explorer para certificar-se de que srv2.sys ou ntfs.sys está consumindo recursos excessivos da CPU.
Cenários de SAN (rede de área de armazenamento)
Em níveis agregados, o desempenho geral da SAN pode parecer bom. No entanto, quando você trabalha com problemas de SMB, o tempo de resposta da solicitação individual é o que mais importa.
Em geral, esse problema pode ser causado por alguma forma de enfileiramento de comando na SAN. Você pode usar o Perfmon para capturar um rastreamento Microsoft-Windows-StorPort e analisá-lo para determinar com precisão a capacidade de resposta do armazenamento.
Latência de E/S de disco
A latência de E/S do disco é uma medida do atraso entre o tempo em que uma solicitação de E/S de disco é criada e concluída.
A latência de E/S medida no Perfmon inclui todo o tempo gasto nas camadas de hardware mais o tempo gasto na fila do Driver de Porta da Microsoft (Storport.sys para SCSI). Se os processos em execução gerarem uma fila de StorPort grande, a latência medida aumentará. Isso ocorre porque a E/S deve aguardar antes de ser despachada para as camadas de hardware.
No Perfmon, os seguintes contadores mostram a latência de disco físico:
- "Objeto de desempenho de disco físico" –> "Média de disco s/contador de leitura" – mostra a latência média de leitura.
- "Objeto de desempenho de disco físico" –> "Média de disco s/contador de gravação" – mostra a latência média de gravação.
- "Objeto de desempenho de disco físico" –> "Média de disco s/Contador de transferência" – mostra as médias combinadas para leituras e gravações.
A instância "_Total" é uma média das latências para todos os discos físicos no computador. Cada uma das outras instâncias representa um disco físico individual.
Observação
Não confunda esses contadores com Média de transferências de disco/s. São contadores completamente diferentes.
Pilha de armazenamento do Windows
Esta seção fornece uma breve explicação sobre a Pilha de Armazenamento do Windows.
Quando um aplicativo cria uma solicitação de E/S, ele envia a solicitação para o subsistema de E/S do Windows na parte superior da pilha. Em seguida, a E/S percorre toda a pilha até o subsistema de hardware "Disco". Então, a resposta viaja todo o caminho de volta. Durante esse processo, cada camada executa sua função e, em seguida, entrega a E/S para a próxima camada.
O Perfmon não cria dados de desempenho por segundo. Em vez disso, ele consome dados fornecidos por outros subsistemas dentro do Windows.
Para o "objeto de desempenho de disco físico", os dados são capturados no nível do "Gerenciador de partições" na pilha de armazenamento.
Quando medimos os contadores mencionados na seção anterior, estamos medindo todo o tempo gasto pela solicitação abaixo do nível do "Gerenciador de partições". Quando a solicitação de E/S é enviada pelo gerenciador de partições para baixo na pilha, marcamos a data e a hora. Quando ele retorna, marcamos a data e hora novamente e calculamos a diferença de tempo. A diferença de tempo é a latência.
Ao fazer isso, estamos contabilizando o tempo gasto nos seguintes componentes:
- Driver de Classe – gerencia o tipo de dispositivo, como discos, fitas e assim por diante.
- Driver de Porta – gerencia o protocolo de transporte, como SCSI, FC, SATA e assim por diante.
- Driver de Miniporta do Dispositivo – esse é o driver de dispositivo para o Adaptador de Armazenamento. Ele é fornecido pelo fabricante dos dispositivos, como Raid Controller e FC HBA.
- Subsistema de Disco – inclui tudo o que está abaixo do Driver de Miniporta do Dispositivo. Isso pode ser tão simples quanto um cabo conectado a um único disco rígido físico ou tão complexo quanto uma Rede de Área de Armazenamento. Se for determinado que o problema foi causado por esse componente, você poderá entrar em contato com o fornecedor de hardware para obter mais informações sobre a solução de problemas.
Enfileiramento de disco
Há uma quantidade limitada de E/S que um subsistema de disco pode aceitar em um determinado momento. O excesso de E/S é enfileirado até que o disco possa aceitar a E/S novamente. O tempo que a E/S gasta nas filas abaixo do nível do "Gerenciador de Partições" é contabilizado nas medidas de latência de disco físico do Perfmon. À medida que as filas aumentam e a E/S precisa esperar mais, a latência medida também aumenta.
Há várias filas abaixo do nível do "Gerenciador de partições", conforme a seguir:
- Fila do Driver de Porta da Microsoft – fila SCSIport ou Storport
- Fila do Driver de Dispositivo Fornecida pelo Fabricante – Driver de dispositivo OEM
- Filas de hardware - como fila do controlador de disco, fila de comutadores SAN, fila do controlador de matriz e fila do disco rígido
Também contabilizamos o tempo que o disco rígido gasta atendendo ativamente a E/S e o tempo de viagem necessário para que a solicitação retorne ao nível do "Gerenciador de Partições" a ser marcado como concluído.
Por fim, precisamos prestar atenção especial à Fila do Driver de Porta (para Storport.sys SCSI). O Driver de Porta é o último componente da Microsoft a tocar em uma E/S antes de entregá-la ao Driver de Miniporta do Dispositivo fornecido pelo fabricante.
Se o Driver de Miniporta do Dispositivo não puder aceitar mais E/S porque sua fila ou as filas de hardware abaixo dele estão saturadas, começaremos a acumular E/S na Fila do Driver de Porta. O tamanho da fila do Driver de Porta da Microsoft é limitado apenas pela RAM (memória do sistema) disponível e pode crescer muito. Isso causa uma grande latência medida.
Alta CPU causada pela enumeração de pastas
Para solucionar esse problema, desabilite o recurso ABE (Enumeração Baseada em Acesso).
Para determinar quais compartilhamentos SMB têm o ABE habilitado, execute o seguinte cmdlet do PowerShell:
Get-SmbShare | Select Name, FolderEnumerationMode
Unrestricted
= ABE desabilitado.
AccessBase
= ABE habilitado.
Você pode habilitar o ABE no Gerenciador do Servidor. Navegue até Serviços de arquivo e armazenamento>Compartilhamentos, clique com o botão direito do mouse no compartilhamento, selecione Propriedades, vá para Configurações e selecione Habilitar enumeração baseada em acesso.
Além disso, você pode reduzir ABELevel para um nível inferior (1 ou 2) para melhorar o desempenho.
Você pode verificar o desempenho do disco quando a enumeração estiver lenta abrindo a pasta localmente por meio de um console ou de uma sessão RDP.