Solução de problemas em drivers PV em instâncias do Windows - Amazon Elastic Compute Cloud

Solução de problemas em drivers PV em instâncias do Windows

Veja a seguir soluções para problemas que podem ser encontrados com imagens do Amazon EC2 e drivers de PV mais antigos.

O Windows Server 2012 R2 perde a conectividade de rede e armazenamento após a reinicialização de uma instância

Importante

Esse problema ocorre somente com AMIs disponibilizadas antes de setembro de 2014.

As Imagens de máquina da Amazon (AMIs) do Windows Server 2012 R2 disponibilizadas antes de 10 de setembro de 2014 podem perder conectividade de rede e armazenamento após a reinicialização da instância. O erro no log do sistema do AWS Management Console indica: "Dificuldade em detectar detalhes do driver PV para a saída do console". A perda de conectividade é causada pelo recurso Limpeza de plug and play. Esse recurso verifica e desabilita dispositivos inativos do sistema a cada 30 dias. O recurso identifica incorretamente o dispositivo de rede EC2 como inativo e o remove do sistema. Quando isso ocorre, a instância perde a conectividade de rede após uma reinicialização.

Para sistemas que você suspeita estar sendo afetados por esse problema, é possível fazer download e executar uma atualização de driver no local. Caso não seja possível executar a atualização de driver no local, é possível executar um script auxiliar. O script determina se sua instância foi afetada. Se ela tiver sido afetada, e o dispositivo de rede do Amazon EC2 não tiver sido removido, o script desabilitará a verificação da Limpeza de plug and play. Se o dispositivo de rede tiver sido removido, o script reparará o dispositivo, desabilitará a verificação do recurso Limpeza de plug and play e permitirá que sua instância seja reinicializada com a conectividade de rede habilitada.

Escolher como corrigir problemas

Há dois métodos para restaurar a conectividade de rede e de armazenamento em uma instância afetada por esse problema. Escolha um dos seguintes métodos:

Método Pré-requisitos Visão geral do procedimento
Método 1 – Redes aprimoradas As redes aprimoradas só estão disponíveis em uma nuvem privada virtual (VPC) que exija um tipo de instância C3. Se o servidor não usar atualmente o tipo de instância C3, altere-o temporariamente. Você altera o tipo de instância do servidor em uma instância C3. Em seguida, as redes aprimoradas permitem a você se conectar à instância afetada e corrigir o problema. Depois de corrigir o problema, você altera a instância de volta para o tipo original. Esse método é geralmente mais rápido do que o método 2 e tem menos probabilidade de resultar em erro do usuário. Haverá cobranças adicionais pelo período de execução da instância C3.
Método 2 – Configuração do Registro Capacidade de criar ou acessar um segundo servidor. Capacidade de alterar as configurações do Registro. Você desanexa o volume raiz da instância afetada, anexa-o a outra instância, conecta-se e faz alterações no Registro. Haverá cobranças adicionais pelo período de execução do servidor adicional. Esse método é mais lento do que o método 1, mas ele funcionou em situações nas quais o método 1 não resolveu o problema.

Método 1 – Redes aprimoradas

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Localize a instância afetada. Selecione a instância e escolha Instance state (Estado da instância) e, em seguida, escolha Stop instance (Interromper instância).

    Atenção

    Quando você interrompe uma instância, os dados em todos os volumes de armazenamento de instâncias são apagados. Para manter dados longe dos volumes de armazenamento de instância, faça backup no armazenamento persistente.

  4. Depois de interromper a instância, crie um backup. Selecione a instância e escolha Actions (Ações), Image and templates (Imagem e modelos) e escolha Create image (Criar imagem).

  5. Altere o tipo de instância para qualquer tipo de instância C3.

  6. Inicie a instância.

  7. Conecte-se à instância usando o Desktop Remoto e faça download do pacote de atualização de drivers AWS PV na instância.

  8. Extraia o conteúdo da pasta e execute AWSPVDriverSetup.msi.

    Depois de executar o MSI, a instância é reinicializada automaticamente e, em seguida, atualiza os drivers. A instância não estará disponível por até 15 minutos.

  9. Após o término da atualização e a instância passar nas duas verificações de integridade no console do Amazon EC2, conecte-se à instância usando o Remote Desktop e verifique se os novos drivers foram instalados. Em Device Manager (Gerenciador de dispositivos), em Storage Controllers (Controladores de armazenamento), localize AWS PV Storage Host Adapter (Adaptador host de armazenamento do PV). Verifique se a versão do driver é a mesma que a versão mais recente listada na tabela Histórico de versões do driver. Para ter mais informações, consulte Histórico do pacote de drivers AWS PV.

  10. Interrompa a instância e altere-a de volta para seu tipo original.

  11. Inicie a instância e retome o uso normal.

Método 2 – Configuração do Registro

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Localize a instância afetada. Selecione a instância, escolha Instance state (Estado da instância) e, em seguida, escolha Stop instance (Interromper instância).

    Atenção

    Quando você interrompe uma instância, os dados em todos os volumes de armazenamento de instâncias são apagados. Para manter dados longe dos volumes de armazenamento de instância, faça backup no armazenamento persistente.

  4. Escolha Launch instance (Executar instâncias) e crie uma instância temporária Windows Server 2008 ou Windows Server 2012 na mesma zona de disponibilidade que a instância afetada. Não crie uma instância do Windows Server 2012 R2.

    Importante

    Se você não criar a instância na mesma zona de disponibilidade que a instância afetada, não conseguirá associar o volume do dispositivo raiz da instância afetada à nova instância.

  5. No painel de navegação, escolha Volumes.

  6. Localize o volume do dispositivo raiz da instância afetada. Desanexe o volume e anexe o volume à instância temporária criada anteriormente. Associe-a com o nome do padrão do dispositivo (xvdf).

  7. Use o Desktop Remoto para se conectar à instância temporária e use em utilitário Gerenciamento de Disco para disponibilizar o volume para uso.

  8. Na instância temporária, abra a caixa de diálogo Run (Executar), digite regedit e pressione Enter.

  9. No painel de navegação do Editor de Registro, escolha HKEY_Local_Machine e no menu Arquivo escolha Carregar Hive.

  10. Na caixa de diálogo Carregar Hive, navegue até Volume afetado\Windows\System32\config\System e digite um nome temporário na caixa de diálogo Nome da chave. Por exemplo, digite OldSys.

  11. No painel de navegação do Editor de Registro, localize as seguintes chaves:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e97d-e325-11ce-bfc1-08002be10318

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e96a-e325-11ce-bfc1-08002be10318

  12. Para cada chave, clique duas vezes em UpperFilters, digite um valor de XENFILT e, em seguida, selecione OK.

    Chave de Registro do volume afetado.
  13. Localize a seguinte chave:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS\Parameters

  14. Crie uma nova string (REG_SZ) com o nome ActiveDevice e o seguinte valor:

    PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01

  15. Localize a seguinte chave:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS

  16. Altere a contagem de 0 para 1.

  17. Localize e exclua as seguintes chaves:

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\xenvbd\StartOverride

    HKEY_LOCAL_MACHINE \your_temporary_key_name\ControlSet001\Services\xenfilt\StartOverride

  18. No painel de navegação do Editor de Registro, escolha a chave temporária que você criou quando abriu pela primeira vez o Editor de Registro.

  19. No menu Arquivo, escolha Descarregar Hive.

  20. No utilitário de Gerenciamento de Disco, escolha a unidade que você associou anteriormente, abra o menu contextual (botão direito do mouse) e escolha Offline.

  21. No console do Amazon EC2, desanexe o volume afetado de instância temporária e reanexe-o à sua instância do Windows Server 2012 R2 com o nome de dispositivo /dev/sda1. Especifique o nome desse dispositivo para designar o volume como volume do dispositivo raiz.

  22. Inicie a instância.

  23. Conecte-se à instância usando o Desktop Remoto e faça download do pacote de atualização de drivers AWS PV na instância.

  24. Extraia o conteúdo da pasta e execute AWSPVDriverSetup.msi.

    Depois de executar o MSI, a instância é reinicializada automaticamente e, em seguida, atualiza os drivers. A instância não estará disponível por até 15 minutos.

  25. Após o término da atualização e a instância passar nas duas verificações de integridade no console do Amazon EC2, conecte-se à instância usando o Remote Desktop e verifique se os novos drivers foram instalados. Em Device Manager (Gerenciador de dispositivos), em Storage Controllers (Controladores de armazenamento), localize AWS PV Storage Host Adapter (Adaptador host de armazenamento do PV). Verifique se a versão do driver é a mesma que a versão mais recente listada na tabela Histórico de versões do driver. Para ter mais informações, consulte Histórico do pacote de drivers AWS PV.

  26. Exclua ou interrompa a instância temporária que você criou nesse procedimento.

Executar o script de correção

Caso não seja possível executar uma atualização de driver no local nem migrar para uma instância mais nova, é possível executar o script de correção para corrigir os problemas causados pela tarefa da Limpeza de plug and play.

Para executar o script de correção
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances (Instâncias).

  3. Escolha a instância para a qual você deseja executar o script de correção. Escolha Instance State (Estado da instância) e, em seguida, escolha Stop Instance (Interromper instância).

    Atenção

    Quando você interrompe uma instância, os dados em todos os volumes de armazenamento de instâncias são apagados. Para manter dados longe dos volumes de armazenamento de instância, faça backup no armazenamento persistente.

  4. Depois de interromper a instância, crie um backup. Selecione a instância, escolha Actions (Ações), Image and templates (Imagem e modelos) e, em seguida, escolha Create image (Criar imagem).

  5. Escolha Instance state (Estado da instância) e, em seguida, escolha Start Instance (Iniciar instância).

  6. Conecte-se à instância usando o Desktop Remoto e, em seguida, faça download da pasta RemediateDriverIssue.zip na instância.

  7. Extraia o conteúdo da pasta.

  8. Execute o script de correção de acordo com as instruções no arquivo Readme.txt. O arquivo está localizado na pasta onde você extraiu o RemediateDriverIssue.zip.

Descarregamento de TCP

Importante

Esse problema não se aplica a instâncias que executam drivers de rede AWS PV ou Intel.

Por padrão, o descarregamento TCP é habilitado para os drivers Citrix PV em AMIs do Windows. Se você encontrar erros no nível do transporte ou na transmissão de pacotes (conforme esteja visível no monitor de performance do Windows)—por exemplo, quando você estiver executando determinadas workloads do SQL—talvez seja necessário desabilitar esse recurso.

Atenção

Desabilitar o descarregamento TCP pode reduzir a performance de rede de sua instância.

Para desabilitar o descarregamento TCP para Windows Server 2012 e 2008
  1. Conecte-se à instância e faça login como administrador local.

  2. Se você estiver usando o Windows Server 2012, pressione Ctrl+Esc para acessar a tela Iniciar e, em seguida, selecione Painel de controle. Se você estiver usando o Windows Server 2008, escolha Iniciar e selecione Painel de controle.

  3. Escolha Rede e Internet e, em seguida, Central de Rede e Compartilhamento.

  4. Selecione Alterar configurações de adaptador.

  5. Clique com o botão direito do mouse em Adaptador de rede Citrix PV Ethernet nº 0 e selecione Propriedades.

    Propriedades de conexão de área local.
  6. Na caixa de diálogo Propriedades de conexão de área local, selecione Configurar para abrir a caixa de diálogo Propriedades do adaptador Citrix PV Ethernet nº 0.

  7. Na guia Avançado, desabilite cada uma das propriedades, exceto Valor correto da soma de verificação TCP/UDP. Para desabilitar uma propriedade, seleciona-a em Propriedade e escolha Desabilitado em Valor.

  8. Escolha OK.

  9. Execute os comandos a seguir em uma janela do prompt de comando.

    netsh int ip set global taskoffload=disabled netsh int tcp set global chimney=disabled netsh int tcp set global rss=disabled netsh int tcp set global netdma=disabled
  10. Reinicialize a instância.

Sincronização de horário

Antes da versão de 13/02/2013, a AMI do Windows, o agente convidado do Citrix Xen poderiam definir a hora do sistema incorretamente. Isso pode fazer com que seu locação de DHCP expire. Se você tiver problemas para se conectar à sua instância, talvez precise atualizar o agente.

Para determinar se você tem o agente convidado do Citrix Xen atualizado, verifique se a data do arquivo C:\Program Files\Citrix\XenGuestAgent.exe é a partir de março de 2013. Se a data nesse arquivo for anterior, atualize o serviço do agente convidado do Citrix Xen. Para ter mais informações, consulte Atualizar o serviço de agente convidado do Citrix Xen.

Workloads que usam mais de 20.000 IOPS de disco apresentam degradação devido a gargalos da CPU

É possível ser afetado por esse problema se estiver usando instâncias do Windows que executam os drivers AWS PV que usam mais de 20.000 IOPS, e se você encontrar o código 0x9E: USER_MODE_HEALTH_MONITOR de verificação de bugs.

As leituras e gravações de disco (E/S) nos drivers AWS PV ocorrem em duas fases: Preparação de E/S e Conclusão de E/S. Por padrão, a fase de preparação é executada em um único núcleo arbitrário. A fase de conclusão é executada no núcleo 0. A quantidade de computação necessária para processar uma E/S varia de acordo com o tamanho e outras propriedades. Algumas E/S usam mais computação na fase de preparação, e outras na fase de conclusão. Quando uma instância gera mais de 20.000 IOPS, a fase de preparação ou conclusão pode resultar em um gargalo, em que a CPU na qual ela é executada está com 100% de capacidade. Se a fase de preparação ou conclusão se torna ou não um gargalo depende das propriedades de E/S usadas pela aplicação.

Começando nos drivers AWS PV 8.4.0, a carga da fase de preparação e de conclusão podem ser distribuídas por vários núcleos, eliminando gargalos. Cada aplicação usa diferentes propriedades de E/S. Portanto, a adoção de uma das configurações a seguir pode aumentar, reduzir ou não afetar a performance da aplicação. Depois de aplicar qualquer uma dessas configurações, monitore a aplicação para verificar se ela está proporcionando a performance desejada.

  1. Pré-requisitos

    Antes de iniciar este procedimento de solução de problemas, verifique os seguintes pré-requisitos:

  2. Observe a carga da CPU na instância

    É possível usar o Gerenciador de Tarefas do Windows para visualizar a carga em cada CPU, a fim de determinar possíveis gargalos na E/S do disco.

    1. Verifique se a aplicação está executando e lidando com o tráfego semelhante à workload de produção.

    2. Conecte-se à sua instância usando RDP.

    3. Clique no menu Start (Iniciar) na sua instância.

    4. Insira Task Manager no menu Iniciar para abrir o Gerenciador de Tarefas.

    5. Se o Gerenciador de tarefas mostrar a exibição Summary (Resumo), clique em More details (Mais detalhes) para expandir a exibição detalhada.

    6. Escolha a guia Performance.

    7. Selecione a CPU no painel esquerdo.

    8. Clique com o botão direito do mouse no gráfico do painel principal e selecione Change graph to (Alterar gráfico para) > Logical processors (Processadores lógicos) para exibir cada núcleo individual.

    9. Dependendo de quantos núcleos estiverem na instância, com o passar do tempo será possível ver linhas exibindo a carga da CPU, ou poderá ver somente um número.

      • Se forem exibidos gráficos da carga ao longo do tempo, procure CPUs onde a caixa esteja quase totalmente sombreada.

      • Se um número for exibido em cada núcleo, procure por núcleos que consistentemente mostrem 95% ou mais.

    10. Observe se o núcleo 0 ou um núcleo diferente está experimentando uma carga pesada.

  3. Escolha qual configuração aplicar
    Nome da configuração Quando aplicar esta configuração Observações
    Default configuration A workload está gerando menos de 20.000 IOPS, ou outras configurações não melhoraram a performance ou a estabilidade.

    Para essa configuração, a E/S ocorre em alguns núcleos, o que pode beneficiar workloads menores, aumentando a localidade do cache e reduzindo a comutação de contexto.

    Allow driver to choose whether to distribute completion A workload está gerando mais de 20.000 IOPS e uma carga moderada ou alta é observada no núcleo 0. Essa configuração é recomendada para todas as instâncias Xen que usam o PV 8.4.0 ou posterior, e que usam mais de 20.000 IOPS, independentemente de problemas serem encontrados ou não.
    Distribute both preparation and completion A workload está gerando mais de 20.000 IOPS. Ou a permissão para o driver escolher a distribuição não melhorou a performance, ou um núcleo diferente de 0 está experimentando uma alta carga. Esta configuração permite a distribuição da preparação de E/S e da conclusão de E/S.
    nota

    Recomendamos que você não distribua a preparação de E/S sem também distribuir a conclusão de E/S (configuração DpcRedirection sem configuração NotifierDistributed) porque a fase de conclusão é sensível à sobrecarga na fase de preparação, quando a fase de preparação estiver ocorrendo em paralelo.

    Valores de chave do Registro
    • NotifierDistributed

      Valor 0 ou não presente — A fase de conclusão será executada no núcleo 0.

      Valor 1 — O driver escolhe executar a fase de conclusão, o núcleo 0 ou um núcleo adicional por disco conectado.

      Valor 2 — O driver executa a fase de conclusão em um núcleo adicional por disco conectado.

    • DpcRedirection

      Valor 0 ou não presente — A fase de preparação será executada em um único núcleo arbitrário.

      Valor 1 — A fase de preparação é distribuída entre vários núcleos.

    Configuração padrão

    Aplique a configuração padrão com as versões de driver AWS PV anteriores à 8.4.0 ou se a degradação da performance ou da estabilidade for observada após a aplicação de uma das outras configurações nesta seção.

    1. Conecte-se à sua instância usando RDP.

    2. Abra um novo prompt de comando do PowerShell como um administrador.

    3. Execute os seguintes comandos para remover as chaves de registro NotifierDistributed e DpcRedirection.

      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name NotifierDistributed
      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name DpcRedirection
    4. Reinicie a instância.

    Permitir que o driver escolha se deseja distribuir a conclusão

    Defina a chave de registro NotiferDistributed para permitir que o driver de armazenamento PV escolha se deve ou não distribuir a conclusão de E/S.

    1. Conecte-se à sua instância usando RDP.

    2. Abra um novo prompt de comando do PowerShell como um administrador.

    3. Use o comando a seguir para adicionar a chave de registro NotiferDistributed.

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name NotifierDistributed
    4. Reinicie a instância.

    Distribuir a preparação e a conclusão

    Defina as chaves de registro NotifierDistributed e DpcRedirection para sempre distribuir as fases de preparação e conclusão.

    1. Conecte-se à sua instância usando RDP.

    2. Abra um novo prompt de comando do PowerShell como um administrador.

    3. Execute os seguintes comandos para definir as chaves de registro NotifierDistributed e DpcRedirection.

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000002 -Name NotifierDistributed
      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name DpcRedirection
    4. Reinicie a instância.