Rodando SQL Server 2008 em um Ambiente com Hyper-V

Uma das questões que assombram a mente de um DBA é: devo ou não colocar o meu banco de dados em um ambiente virtualizado?

Para ajudar a responder essa e outras questões relacionadas a virtualização fiz um “breve” resumo do artigo Running SQL Server 2008 in a Hyper-V Environment – Best Practices and Performance Considerations. Artigo escrito por: Lindsey Allen, Mike Ruthruff, Prem Mehra

Você pode fazer download do artigo através do link: http://bit.ly/xD0g6n

Primeiramente, O que é Hyper-V?

É um recurso que você pode habilitar no sistema operacional Windows Server 2008. É uma fina camada de software entre o hardware e o sistema operacional que permite executar vários sistemas operacionais, um sem afetar o outro, em um computador host ao mesmo tempo. Hyper-V é uma tecnologia de virtualização que pode ser usada por empresas para consolidar servidores subutilizados, reduzindo o custo total de propriedade (TCO) e manter ou melhorar a qualidade de serviço (QoS). É um desafio dimensionar o hardware necessário para consolidar as diferentes cargas de trabalho e ainda fornecer espaço para crescimento. O objetivo deste post é ajudar a lidar com esta dificil missão, concentrando-se na execução do Microsoft SQL Server em um ambiente do Hyper-V.

De forma bem resumida e simplificada, segue o Pré-Install Checklist:

  • Use um processador que suporte hardware-assisted Virtualization
  • Garanta que o hardware-assisted virtualization e Data Execution Prevention (DEP) estejam presentes e habilitadas. (Verifique através da configuração de BIOS)
  • Rode o Hyper-V server role apenas na partição root do sistema operacional Windows.
  • Configure qualquer disco que será configurado como pass-through disk para a máquina virtual Guest como offline na partição root usando DISKPART ou Gerenciador de Volumes
  • Utilize o network adapter ao invés do legacy network adapter quando estiver configurando a rede para uma máquina virtual
  • Evite emular dispositivos para implementações com SQL Server sempre que possível

Recomentações para Storage:

Como com qualquer implantação do SQL Server, corretamente dimensionada e configurada, I/O é crítica para o desempenho. Configurar o armazenamento em ambientes virtualizados não é uma exceção, e o hardware de armazenamento deve fornecer throughput suficiente, bem como a capacidade de armazenamento bem planejada para atender às necessidades atuais e futuras das máquinas virtuais. Certifique-se de seguir todas as práticas recomendadas de armazenamento pré-implantação quando você configura o seu storage.

Hyper-V suporta vários tipos de opções de armazenamento. Cada uma das opções de armazenamento pode ser conectada através de um controlador IDE ou SCSI. Para arquivos de dados e de log do SQL Server, foi utilizada a opção de configuração de controlador virtual SCSI. SQL Server é I/O intensivo, por isso, recomendamos que você limita suas escolhas para as duas opções com melhores resultados:

  • Pass-through disk
  • fixed-size VHD storage

Nos testes descritos a seguir, ambas as opções foram utilizadas e em todas as configurações synthetic SCSI controllers foram utilizados para as máquinas virtuais Guest.

Entendendo os Cenários e como os testes foram Realizados

O primeiro grupo de cenários de teste foi projetado para compreender a sobrecarga de desempenho executando o SQL Server em um ambiente do Hyper-V. Testes de baseline foram executadas três maneiras: em um ambiente Windows nativo com o Hyper-V desativado, na partição root com o Hyper-V habilitado e na máquina virtual Guest. Em cada caso, a configuração de hardware é idêntica.

Nota: Instância nativa refere-se a uma instância do SQL Server em execução em um ambiente Windows nativo e instância virtual refere-se a uma instância do SQL Server em execução na máquina virtual Guest.

Esta seção inclui os seguintes cenários de teste:

  • Determinar Sobrecarga I/O de Pass-through disk usando SQLIO
  • Comparar o desempenho da carga de trabalho OLTP em uma instância nativa e uma instância virtual
  • Comparar relatórios de desempenho de consulta em uma instância nativa e uma instância virtual
  • Observar o impacto de virtualização em operações de banco de dados comuns:
    • Backup e Restore
    • Index Rebuild
    • DBCC CHECKDB

Configuração do Storage Utilizada nos Testes


Resultados:

Desempenho da Configuração Pass-Through

Para a baseline da taxa de transferência, os mesmos testes SQLIO foram executados em todas as máquinas virtuais Guest e na root. As figuras abaixo mostram os resultados dos testes de I/O aleatório e seqüencial usando SQLIO. Foram escolhidos os tamanhos de IO comuns para SQL (8 K e 64 K).



Através de repetidos testes aleatório e seqüencial de I/O, o overhead identificado de I/O do Hyper-V, usando pass-through disks é de nenhum para mínimo. Para obter mais informações, incluindo uma análise aprofundada de desempenho de pass-through disks e disco rígido virtual, consulte o white paper programado por Tony Voellm e Liang Yang, “Windows Server 2008 Hyper-V Virtual Hard Disk and pass-through disk performance.”

Virtual Machine Performance Overhead: OLTP Workload

Três níveis de cargas de trabalho foram executados contra a baseline, no root e na máquina virtual Guest. A Baseline está executando a instância do SQL Server no servidor nativo com o Hyper-V desativado. Isso foi feito usando o hypervisorlaunchtype de configuração off (ou seja, bcdedit/set hypervisorlaunchtype), que requer uma reinicialização do Windows para ter efeito. Os níveis de stress de cenário de teste foram definidos pela porcentagem de utilização da CPU. Como a utilização de CPU em 100% não é um cenário comum em ambientes de produção, a meta estabelecida foi um intervalo de nível de estresse de CPU de 20% a 80%. As Metas de utilização de CPU para cada um dos níveis de carga de trabalho são definidas na tabela abaixo:

Test workload

Approximate CPU target

OLTP – Low

30%

OLTP – Med

50%-60%

OLTP – High

80%

Como as máquinas virtuais Guest do Hyper-V suportam até quatro processadores lógicos, para comparação direta, o host foi configurado para usar quatro núcleos através da configuração do BIOS (NUMPROC = 4). Para compreender o impacto de configuração de armazenamento, duas máquinas virtuais foram configuradas com 14GB de memória RAM usando os dois tipos de configuração de armazenamento do Hyper-V recomendada para a carga de trabalho do SQL Server (pass-through disks e fixed-size VHD).

A seguinte fórmula foi utilizada para medir a performance:

Batch/CPU% = Batch Requests/sec divided by percentage CPU utilization


O sistema dimensionou muito bem a carga em todos os testes neste cenário; cada configuração alcançado a mesma taxa de transferência, com a máquina virtual em um custo mais elevado de CPU para atingir a mesma taxa de transferência. O desempenho de Pass-through disks e fixed VHD
foram muito semelhantes com menos de um ponto percentual de variação de sobrecarga.

Nos testes também foi possível observar o overhead de CPU executando a carga de trabalho OLTP na máquina virtual. Observamos que o overhead em percentagem foi superior na menor carga de trabalho. Há uma certa quantidade de trabalho fixo e CPU que está associada com a máquina virtual. Se o que é distribuído em uma menor quantidade de trabalho, então, em uma porcentagem o overhead será maior.

Ambas as máquinas virtuais Guest usaram a mesma configuração de discos para armazenar as base de dados do SQL Server e os arquivos de log, assim, estes são diretamente comparáveis. No caso de arquivos VHD, eles foram os únicos arquivos colocados nos discos físicos expostos na partição root. Foi observado um ligeiro aumento de latência quando usamos VHDs para armazenamento dos arquivos de dados e log do SQL Server, que se traduziu em um pequeno impacto na taxa de transferência de carga de trabalho como mostrado no gráfico acima.

Usando VHD para a máquina virtual Guest, as configurações tem vantagens tanto de provisionamento quanto gerenciamento. Analisando por uma perspectiva de rendimento/desempenho, em um caso de low-stress, não há diferença entre pass-through e fixed VHD. Com o aumento da carga de trabalho, um disco de pass-through começa a mostrar uma pequena vantagem de desempenho. A Figura abaixo mostra o desempenho neste cenário de teste OLTP.


No próximo gráfico nós podemos observer a latência média de disco gerada enquanto o teste é executado. Como esperado, VHD tem a maior latência, enquanto a latência do pass-through disk é igual à latência de armazenamento nativa. Valores de latência de disco no caso de VHD foram relatados a partir dos contadores da máquina virtual Guest, no entanto, não notamos nenhuma diferença entre estes e os valores relatados pela partição root.


Comparando Desempenho em Relatórios de Consulta

Neste cenário de teste, quatro relatórios de consultas foram executadas seqüencialmente para medida de consumo de recursos e tempo para conclusão. Estas quatro consultas fazem uso intensivo de I/O e consomem significativa CPU devido a agregações. A configuração sp_configure ‘max degree of parallelism’ é definido como 0 para as consultas utilizarem todos os recursos da CPU disponíveis.

A diferença entre as consultas em execução em máquinas virtuais Guest, nativamente ou na partição root era mínima; observou-se um aumento relativamente pequeno de overhead com as máquinas virtuais Guest. A figura abaixo mostra o tempo de conclusão e o consumo de CPU das consultas.


Análise de Desempenho para Operações no Banco de Dados

Algumas operações de banco de dados fazem uso intensivo de CPU. Vamos avaliar a performance obtida nas operações de backup e restore com compressão, index Rebuild e DBCC CheckDB

Backup e Restore

Em comparação com a mesma operação em um sistema operacional nativo, houve 10-15% de degradação de desempenho no throughput de backup com um notável aumento de CPU. Degradação semelhante foi observada com taxa de transferência de restauração. Esta degradação na taxa de transferência é explicada pela sobrecarga na rede incorrida quando operações de dentro da máquina virtual Guest fazem uso intenso de recursos de rede (Os arquivos de backup foram para um servidor diferente, necessitando assim do uso da rede). Nos testes, esta foi a área identificada como sendo a mais preocupante quando se considera a sobrecarga introduzida executando o SQL Server a partir de uma máquina de virtual Guest do Hyper-V. Foi muito mais significativo do que qualquer sobrecarga observada para operações de I/O ou CPU.

Neste cenário de teste, observou-se que a taxa de transferência de rede foi na faixa de 50-60 MB por segundo durante a operação de backup e restore. Havia um único adaptador de rede de 1Gbs/sec no servidor usado para SQL Server e no servidor utilizado para envio do Backup. Compactação foi usada durante a operação, o que explica por que a taxa de transferência relatada é significativamente mais elevada do que o throughput de rede que pode ser suportado, dado a configuração de rede.



Backup e Restore Throughput:

 

Baseline

Root partition

Guest virtual machine (pass-through)

Guest virtual machine

(fixed VHD)

Backup throughput (MB/s)

181.00

158.00

154.00

157.00

Total time for backup (seconds)

764.00

875.00

874.00

874.00

Restore throughput (MB/s)

241.00

218.00

173.00

167.00

Index Rebuild

Três grandes índices foram reconstruídas de forma seqüencial com compactação de página habilitada (um novo recurso do SQL Server 2008 que comprime as páginas de dados dentro de um índice). O índice foi reconstruído com compactação de página para aumentar a pressão da CPU. Utilização de recursos e tempo para conclusão foram capturados.

Muito pouca sobrecarga foi observada quando a mesma operação foi executada dentro das máquinas virtuais.


DBCC CheckDB

Da mesma forma que o Index Rebuild, muito pouca diferença foi encontrada ao executar o processo a partir da máquina virtual Guest.


Conclusão

Do ponto de vista de desempenho, o Hyper-V é uma opção viável para cenários de consolidação do SQL Server. O desempenho geral do SQL Server em execução em um ambiente virtualizado Hyper-V é razoável em comparação com o equivalente ambiente nativo do Windows Server 2008.

Com boa capacidade de I/O e configuração, a sobrecarga é mínima. Para melhor desempenho, você deve ter processadores físicos suficiente para suportar o número de processadores virtuais configuradas no servidor para evitar overcommit dos recursos da CPU. A sobrecarga da CPU aumenta significativamente quando os recursos da CPU são overcommitted. É importante testar cada aplicativo cuidadosamente antes de implantá-lo em um ambiente do Hyper-V em produção.

Seguem algumas das considerações gerais e recomendações quando executando o SQL Server em ambientes de Hyper-V.

Observações:

  • Máquinas virtuais Guest Hyper-V são limitadas a um máximo de quatro núcleos de CPU; Portanto, você deve executar o SQL Server na máquina virtual Guest no Hyper-V somente se seu desempenho de carga de trabalho pode ser satisfeito por não mais de quatro CPUs.
  • Quando comparados com configurações nativas com recursos de hardware comparáveis, a mesma taxa de transferência pode ser alcançada em uma máquina virtual Guest a um custo de ligeiramente maior utilização da CPU. É possível ocorrer com o Hyper-V o overcommit de recursos da CPU quando o número total de núcleos de CPU lógicos configurado em todas as máquinas virtuais de Guest for maior do que o número real de núcleos de CPU físicos disponíveis no servidor. Nestes casos, temos observado maior sobrecarga de CPU e desempenho quando nós rodamos Workloads no SQL Server. Dimensionamento de hardware adequado é fundamental para o desempenho do SQL Server. Você deve garantir que os recursos físicos de CPU em um servidor são adequados para satisfazer as necessidades das máquinas virtuais Guest testando sua carga de trabalho em ambiente virtualizado planejado.
  • As informações capturadas até agora é específico para considerações de desempenho; para sua implantação, atender considerações funcionais (ou seja, configurações com suporte, opções para obter alta disponibilidade e assim por diante). Há mais informações no anexo do artigo mencionado no inicio do post, que abrange a funcionalidade geral do Hyper-V e políticas atuais de suporte relacionadas à execução do SQL Server nas configurações de Hyper-V.
  • Descobrimos que houve sobrecarga mínima de desempenho I/O quando executando o SQL Server de uma máquina virtual Guest. O uso de Pass-through disk apresenta o melhor desempenho de I/O; no entanto, observamos mínimo overhead quando nós utilizamos VHDs de tamanho fixo. A decisão de qual configuração de armazenamento usar deve ser feita com base no que faz sentido para a implantação específica; máquinas virtuais usando VHDs são mais fáceis para se deslocar do que Pass-through disk.
  • Para cenários de consolidação, a quantidade de recursos de armazenamento disponíveis, bem como o cenário vai conduzir sua decisão. Nos testes realizados, encontramos um desempenho aceitável nas configurações compartilhadas e dedicadas. Em ambos os casos, você deve dimensionar seu armazenamento com sua carga de trabalho e requisitos de tempo de resposta em mente. Sempre siga as práticas recomendadas com relação ao armazenamento subjacente em ambientes de Hyper-V, como faria com qualquer implantação do SQL Server.

Recomendações:

  • Utilizar Pass-through disks ou VHDs fixos para seu armazenamento de máquina virtual Guest. Estas são as melhores opção para desempenho, e eles devem fornecer os melhores resultados para cargas de trabalho do SQL Server. VHDs dinâmicos não são recomendados devido a razões de desempenho.
  • Evitar o uso de dispositivos emulados e em vez disso, garantir que os componentes de integração para o Hyper-V foram instalados e dispositivos sintéticos estão sendo usados para I/O, rede e assim por diante. Dispositivos sintéticos irão fornecer o melhor desempenho com menor quantidade de sobrecarga da CPU.
  • A capacidade de usar algumas dessas técnicas vai depender de recursos de hardware.
  • Para cargas de trabalho que fazem intenso uso dos recursos de rede, consulte as seções virtualização e rede do guia Windows Performance Tuning guide para obter práticas recomendadas sobre otimização de rede para a sua configuração específica. Características da carga de trabalho podem variar muito, teste o desempenho com o de sua carga de trabalho.
About these ads

  1. Excelente post sobre virtualização e SQL Server

  2. Parabéns! Ótimo post! Na prática realmente é interessante utilizar o tamanho fixo de VHD. Alia desempenho e flexibilidade de gerenciamento e backup/restore.

  3. Excelente artigo! Muito completo e com bastante informação.

    Parabéns!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 763 outros seguidores

%d blogueiros gostam disto: