DevSecOps

24 abr, 2013

Ajuste de desempenho no Windows 2012: consumo de energia e desempenho

Publicidade

Neste artigo da nossa série sobre o Windows 2012, discutiremos o consumo de energia e as escolhas relativas ao desempenho. O Windows Server 2012 é otimizado para ter uma excelente eficiência energética com um mínimo de impacto no desempenho, mas há algumas opções que podem ser feitas. Discutiremos as opções relacionadas à eficiência energética para ajudá-lo a decidir se você precisa ajustar as configurações do seu servidor, apesar de não ser necessário fazer muitos ajuste nas configurações de energia do seu Windows Server 2012, para a maioria das cargas de trabalho mais comuns.

Como calcular a eficiência energética do servidor

Ao modificar as configurações do seu servidor para economizar energia, você deve levar em conta o desempenho. Mexer nas configurações de energia afeta o desempenho e nem sempre em quantidades proporcionais. Considere o orçamento com energia e os objetivos de desempenho para determinar se a troca é aceitável. Você pode calcular a razão da eficiência energética de seu servidor para ter uma medida útil que incorpora informações de energia e desempenho. Eficiência energética é a razão do trabalho realizado pela média do gasto energético necessário durante um período de tempo especificado. A equação seria então parecida com: eficiência energética = quantidade de trabalho realizado/média de Watts gastos. Você pode utilizar essa métrica para levar em consideração escolhas entre energia e desempenho. O objetivo de economizar 10% de energia em todo o data center falha ao tentar capturar o efeito correspondente no desempenho e vice-versa. De forma similar, se você ajustar o seu servidor para melhorar a performance em 5% que resulte em um gasto 10% maior de energia, pode ser que esse resultado talvez não seja aceitável para você. Utilizando a métrica da eficiência energética, é possível tomar uma decisão mais bem informada do que utilizando apenas a medida do gasto energético e do desempenho separadas.

Medindo o consumo de energia

Antes de ajustar o seu servidor para economizar energia, é preciso estabelecer um patamar de referência. Você pode utilizar medidores de energia e ferramentas do Windows Server 2012 para visualizar o nível de consumo de energia do sistema utilizando o Performance Monitor. Você só poderá ver alguns itens como medidas e gastos, caso as especificações do modelo do seu hardware atendam às especificações do Gerenciamento Avançado de Energia, parte do programa do Logo do Windows. Ou você pode checar manualmente pelos contadores do PerfMon. Para tanto, abra o PerfMon, selecione Adicionar Contadores e localize o grupo de Contadores de Energia. Se aparecerem medidores de energia, então a sua plataforma permite medidas. O contador de energia que exibe o consumo em watts aparece nos grupos selecionados. Se a sua plataforma de servidor não suporta medições, você pode utilizar um dispositivo medidor conectado à tomada para calcular o consumo de energia. Para estabelecer um patamar, você deve tirar a média necessária para diversos níveis de carga do sistema, de idle (ocioso) até 100% de uso. Você pode usar níveis de carga para avaliar o desempenho e o consumo de energia de diferentes configurações em vários níveis. Pode haver cenários onde uma configuração é melhor para cargas pesadas e outra que funciona melhor para cargas mais leves. É importante que você entenda os requerimentos de sua carga de trabalho para selecionar a melhor configuração. Não pense que quando você encontrar uma boa configuração, ela se manterá sempre a ideal. Você deve medir a utilização e o consumo de energia em períodos regulares, e depois mudanças nos tipos ou níveis das cargas ou alterações no hardware.

Diagnóstico de problemas de eficiência energética

É possível utilizar a ferramenta de linha de comando Windows PowerCfg para analisar a eficiência energética do seu servidor em idle (ocioso). Quando você executa o comando powercfg com a opção /energy, ele irá realizar um teste de 60s para detectar potenciais problemas de eficiência energética. O utilitário irá gerar um relatório HTML simples para você. Para se certificar de que você terá uma análise precisa, feche todas as aplicações locais antes de rodar o programa. Por falar nisso, o Windows PowerCfg não está disponível nos sistemas operacionais anteriores ao Windows 7 e Windows Server 2008 R2. Alguns dos itens comportamentais detectados pelo comando powercfg /energy são: baixos tickrates (taxas de ciclos de atualização), drivers sem suporte para controle de energia e excesso de utilização da CPU. Esse utilitário fornece uma forma simples de identificar e corrigir questões relativas à administração energética e pode ajudar a atingir uma economia significativa nos custos de um grande data center.

Uso de perfis de energia no Windows Server

O Windows Server 2012 possui três perfis de energia que vão ao encontro das necessidades de diferentes situações. Esses perfis fornecem um jeito simples de personalizar um servidor para certos objetivos de gasto e desempenho. A tabela abaixo exibe os diferentes perfis e os cenários comuns quando você utiliza cada um deles:

Equilibrado (Recomendado) Configuração padrão. Objetiva boa eficiência energética com um mínimo de impacto no desempenho Uso Geral Tem capacidade para oferecer se houver demanda. Recursos de economia de energia e equilíbrio da relação energia e desempenho
Alta Performance Aumenta o desempenho ao custo de um alto gasto energético. Limitações térmicas e de consumo, maior dispêndio e questões de confiabilidade devem ser levadas em conta Aplicativos com baixa latência. Aplicativos cujo código é sensível à mudanças de desempenho O processador está sempre “travado” no estado de maior desempenho (incluindo frequências de “turbo”). Todos os núcleos são liberados
Economia de energia Limita o desempenho para economizar energia e reduzir custos operacionais Instalações com orçamentos limitados. Restrições de temperatura Limita a frequência do processador a uma porcentagem de seu máximo (caso seja possível) e aciona outros mecanismos de economia de energia

Ajustes no gerenciamento de energia do processador

Cada definição de energia na tabela representa uma combinação de vários parâmetros de administração de energia. Os planos incluídos por padrão são agrupamentos de configurações recomendadas que cobrem uma variedade de cenários e de cargas de trabalho. Entretanto, esses planos podem não contemplar necessidades individuais. As sessões a seguir descrevem formas de ajustar parâmetros específicos de gerenciamento de consumo de energia do processador para atender a objetivos que não são contemplados pelas definições padrão. Se você precisar compreender melhor os parâmetros de energia, veja este artigo sobre “Configurações das Políticas de Energia e Uso do Windows”, do MSDN, para uma explicação detalhada dos parâmetros e definições de energia. Ele também inclui instruções para ajustes utilizando a ferramenta PowerCfg.

Modo de aumento do desempenho do processador

As tecnologias Intel Turbo Boost e AMD Turbo CORE permitem que os processadores funcionem melhor em altos níveis de carga de processamento. Entretanto, esse recurso aumenta o consumo de energia e por isso o Windows Server 2012 configura o uso de tecnologias Turbo com base nas políticas de energia que estão em uso e na implementação específica do processador. O Turbo encontra-se habilitado nos perfis de alto desempenho em todos os processadores Intel e AMD, e encontra-se desabilitado nos perfis de economia de energia. Em perfis equilibrados nos sistemas que dependem do tradicional gerenciamento de frequência, o Turbo está habilitado por padrão, mas apenas se a plataforma suportar o registrador EPB. Para Intel Nehalem e processadores AMD, o Turbo está desabilitado por padrão em plataformas baseadas em estado-P (P-state). Entretanto, se um sistema suportar Collaborative Processor Performance Control (CPPC – um novo modo alternativo de comunicação de desempenho entre o sistema operacional e o hardware), o Turbo pode estar habilitado se o sistema operacional Windows requisitar dinamicamente ao hardware que forneça o maior nível de desempenho possível. Para habilitar ou desabilitar o recurso de Turbo Boost, é necessário configurar o parâmetro Processor Performance Boost Mode. Esse parâmetro tem cinco valores possíveis. Eles estão listados na tabela abaixo. Para controles de estados-P, as opções são: desabilitado, habilitado (o Turbo está disponível para o hardware sempre que o desempenho nominal seja solicitado), e eficiente (o Turbo está disponível apenas se o registrador EPB estiver implementado). Para controles baseados em CPPC, as opções são: desabilitado, “eficiência habilitada” (o Windows especifica a quantidade exata de Turbo a ser fornecida), e “agressivo” (o Windows solicita o “máximo desempenho” para habilitar o Turbo). No Windows Server 2012, o valor padrão para o Modo Boost é 3.

Valor (Nome) Estado-P CPPC
0 (Desabilitado) Desabilitado Desabilitado
1 (Habilitado) Habilitado Eficiência habilitada
2(Agressivo) Habilitado Agressivo
3 (Eficiência habilitada) Eficiente Eficiência habilitada
4 (Eficiência agressiva) Eficiente Agressivo

Você pode usar o utilitário PowerCfg e digitar o os seguintes comandos para habilitar o Modo de Aumento de Desempenho do Processador no perfil atual de energia:

  • Powercfg -setacvalueindex scheme_current sub_processor PERFBOOSTMODE1
  • Powercfg -setacative scheme_current

Isso não exige que você reinicie o servidor. Para configurar esse valor para outros perfis de energia além do perfil selecionado, você pode utilizar “aliases” como SCHEME_MAX (economia de energia), SCHEME_MIN (alta performance), SCHEME_BALANCED (equilibrado) no lugar de SCHEME_CURRENT. Substitua “scheme current” nos comandos powercfg -setactive exibidos anteriormente com o “alias” desejado para habilitar o perfil de energia. Exemplo: para colocar o modo boost para o perfil de energia e tornar economia de energia o perfil atual, execute os seguintes comandos:

  • Powercfg -setacvalueindex scheme_max sub_processor PERFBOOSTMODE 1
  • Powercfg -setactive scheme_max

Estados de máximo e mínimo desempenho dos processadores

Os processadores podem alterar os estados de desempenho rapidamente, de forma a atender à demanda, entregando desempenho quando for necessário e economizando energia quando for possível. Se o seu servidor possui necessidades específicas de máximo ou mínimo desempenho, você talvez deva levar em conta os parâmetros de máximo ou mínimo desempenho do processador. Os valores para os estados de desempenho máximo e mínimo do processador são uma porcentagem da frequência máxima, com um valor entre 0 e 100. Se o seu servidor precisa de uma latência ultrabaixa, cuja frequência não varie, ou de níveis mais altos de desempenho, você talvez não deseje que o processador fique mudando para estados de baixo-desempenho. Para servidores desse tipo, é possível cobrir o estado de mínimo desempenho em 100% ao usar os seguintes comandos:

  • Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMIN 100
  • Powercfg -setactive scheme_current

Se o seu servidor precisa de um baixo consumo de energia, talvez possa colocar o estado de desempenho do processador para o nível máximo. Por exemplo, é possível restringir o processador a 75% de sua frequência máxima ao utilizar os seguintes comandos:

  • Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMAX 75
  • Powercfg -setactive scheme_current

Perceba que só é possível atribuir uma porcentagem do desempenho caso o processador suporte esse recurso. Veja a documentação do seu processador para determinar se isso é ou não possível, ou veja no contador Perfmon “% da frequência máxima” no grupo “Processador” para ver quais frequências se aplicam.

Processor Performance Core Parking Maximum e Minimum Cores

Core parking é uma tecnologia na qual o motor de gerenciamento de energia dos processadores do Windows e o sequenciador da CPU trabalham juntos para ajustar dinamicamente o número de núcleos que estão disponíveis para executarem as threads. O motor PPM escolhe um número mínimo de núcleos disponíveis para as threads a serem processadas. Núcleos que são escolhidos para ficarem “parados” não terão nenhuma thread agendada e caem para estados de baixíssimo consumo quando não estão processando interrupções, DPCs ou outros trabalhos afins. O conjunto de núcleos “não paralisados” ficará responsável pelo restante da carga de processamento. Core parking pode aumentar a eficiência energética durante períodos de baixo uso de energia no servidor porque núcleos “estacionados” podem entrar em estados muito mais profundos de economia. Para a maioria dos servidores, as configurações padrão para o core parking oferecem um bom equilíbrio entre desempenho e eficiência energética. Se o seu servidor precisa de configurações específicas de core parking, você pode controlar o número de núcleos que estarão disponíveis para parking ao utilizar os parâmetros “Processor Performance Core Parking Maximum Cores” e “Processor Performance Core Parking Minimum Cores”, do Windows Server 2012. Um cenário em que o core parking apresenta dificuldades é quando há uma ou mais threads ativas associadas a um conjunto de CPUs não triviais, em um nó NUMA (ou seja, mais de uma CPU, mas menos do que todo um conjunto de CPUs no nó). Quando o algoritmo de core parking está escolhendo os núcleos para colocá-los de volta à ativa (assumindo que ocorreu um aumento na carga de trabalho), ele não sabe escolher os núcleos que têm afinidade com o subgrupo de atividades ativas e acaba por despertar núcleos que, na verdade, não serão utilizados. Os valores para esses parâmetros são porcentagens em um campo de 0 a 100. O parâmetro “Processor Performance Core Parking Maximum Cores” controla a porcentagem máxima de núcleos que podem ser colocados em atividade (disponíveis para processar threads) em qualquer momento, enquanto o parâmetro “Processor Performance Core Parking Minimum Cores” controla a porcentagem mínima de núcleos que podem ser colocados em atividade. Para desligar o core parking, configure o parâmetro “Processor Performance Core Parking Minimum Cores” para 100 utilizando os seguintes comandos:

  • Powercfg -setacvalueindex scheme_current sub_processor CPMINCORES 100
  • Powercfg -setactive scheme_current

Para reduzir o número de núcleos agendáveis para 50% do valor máximo, ajuste o parâmetro para 50 como se segue:

  • Powercfg -setacvalueindex scheme_current sub_processor CPMAXCORES 50
  • Powercfg -setactive scheme_current

Processor Performance Core Parking Utility Distribution

Distribuição de utilidade é um algoritmo de otimização do Windows Server 2012 que é projetado para aumentar a eficiência do gasto de energia para algumas cargas de trabalho. Ele rastreia atividades de CPU relativamente “imóveis” (isto é, DPCs, interrupções, ou threads afins) e prevê o trabalho futuro em cada processador baseado na premissa de que qualquer trabalho movível pode ser distribuído igualmente entre todos os núcleos estacionados. A distribuição de utilidade é habilitada por padrão em alguns processadores quando em perfis equilibrados de uso de energia. Ele pode reduzir o consumo de energia do processador ao diminuir as frequências solicitadas à CPU em cargas de trabalho que estão em um estágio razoavelmente estável. Entretanto, a distribuição de utilidade não é necessariamente uma boa escolha de algoritmo para trabalhos que estão sujeitos a picos de atividade ou para programas onde a carga muda rápido e aleatoriamente entre os processadores. Para tais atividades, recomendamos desabilitar a distribuição de utilidade fazendo uso dos seguintes comando: Powercfg -setacvalueindex scheme_current sub_processor DISTRIBUTEUTIL 0 Powercfg -setactive scheme_current Esperamos que este artigo seja útil e possa ter te dado uma visão geral sobre o que é possível ajustar  na relação desempenho/eficiência energética do processador com o Windows 2012. Em nosso próximo artigo iremos cobrir otimizações para o subsistema de redes.

***

Artigo traduzido pela Redação iMasters, com autorização do autor. Texto original da equipe Monitis, liderada por Hovhannes Avoyan, disponível em http://blog.monitis.com/index.php/2012/12/06/performance-tuning-windows-2012-power-consumption-and-performance/