Desempenho de Inicialização

Nota do Editor: Este é o primeiro artigo de um membro nos cargos mais altos na equipe de desenvolvimento. Gostaria de apresentar Michael Fortin, que é um dos Engenheiros Distintos da Microsoft e lidera a equipe de recursos Fundamentais, parte de nosso grupo de Sistema Operacional Central. Michael lidera trabalhos sobre desempenho e confiabilidade através da plataforma Windows. --Steven (PS: Visitem www.microsoft.com/ie e testem o lançamento beta 2 do Internet Explorer 8).

Temos uma equipe dedicada no Windows 7 voltada para desempenho de inicialização, mas a realidade é que o esforço se estende por toda a divisão Windows e além. Nossos principais parceiros de hardware e software estão trabalhando de perto conosco e podem honestamente ser considerados uma extensão da equipe.

A inicialização pode compreender uma de três experiências: inicialização, retorno do modo de suspensão ou retorno do modo hibernar. Apesar do retorno do modo de suspensão ser o padrão, geralmente durando de 2 a 5 segundos com base em hardwares comuns e carregamento de softwares padrão, este artigo trata primariamente de inicialização, já que se comentou bastante sobre essa experiência. Para o Windows 7, um dos principais objetivos é aumentar significativamente o número de sistemas que possuem bons tempos de inicialização. No laboratório, um sistema muito bom é um que inicializa em menos de 15 segundos.

Para que um PC inicialize rápido é preciso que várias tarefas sejam realizadas de forma eficiente e com alto grau de paralelismo.

  • Arquivos devem ser lidos na memória.
  • Serviços do sistema têm que ser inicializados.
  • Dispositivos têm que ser identificados e iniciados.
  • As credenciais dos usuários precisam ser autenticadas para o login.
  • A área de trabalho precisa ser construída e exibida.
  • Aplicativos de inicialização precisam ser iniciados.

Por causa da diferença entre sistemas e configurações, os tempos de inicialização podem variar significativamente. Isso é verificado por muitos resultados de laboratório, mas também pode ser visto em análises independentes, como a conduzida por Ed Bott. Amostras de dados da população de sistemas de Ed mostraram que somente 35% das inicializações levaram menos de 30 segundos para dar o controle ao usuário. Apesar dos dados de Ed representarem uma população pequena, estão bem alinhados com o que estamos observando. Dados do Windows Vista SP1 (abaixo) também indicam que aproximadamente 35% dos sistemas inicializam em 30 segundos ou menos, enquanto 75% inicializam em 50 segundos ou menos. Os dados do Vista SP1 são dados de telemetria do mundo real. Eles chegam até nós através do grande número de sistemas (milhões) nos quais os usuários optaram por enviar dados anônimos para a Microsoft através do Programa de Aperfeiçoamento da Experiência do Usuário.

 

Do nosso ponto de vista, pouquíssimos sistemas inicializam de forma consistente e rápido o suficiente e nós temos que melhorar muito. Obviamente os sistemas que ultrapassam 60 segundos têm algo que precisamos melhorar drasticamente – sejam problemas de dispositivos, sistema de rede ou software. Como podem ver há sistemas com tempo de inicialização muito longo. Uma das coisas que vemos no espaço do PC é essa variabilidade de desempenho – a variabilidade surge da diversidade de escolhas e também da diversidade de qualidade dos componentes numa experiência PC qualquer. Também há algumas tarefas de manutenção do sistema que podem contribuir para tempos de inicialização longos. Se um usuário opta por instalar uma atualização de software grande, a atualização do sistema em si pode ocorrer na próxima inicialização. Nossa métrica vai capturar isso e infelizmente pode levar minutos até a conclusão. Independentemente da causa, grande parte do trabalho que precisamos fazer como membros do ecossistema do PC é abordar o tempo longo de inicialização.

Tanto na amostra de Ed quanto nos nossos dados de telemetria, o tempo de inicialização deve refletir quando uma máquina está pronta e responsiva ao usuário. Isso inclui registrar-se no sistema e chegar até uma área de trabalho utilizável. Não é uma métrica perfeita, mas uma que capta a grande maioria dos problemas. Nos sistema do Windows 7 e Vista, a métrica é captada automaticamente e armazenada no registro de eventos do sistema. O artigo de Ed se aprofunda nesse assunto.

Sabemos que há outras noções as quais os usuários julgam refletir o tempo de inicialização, tal como quando o disco pára, quando seus aplicativos respondem totalmente ou quando o menu iniciar e a área de trabalho podem ser utilizados. Além disso, o tempo “Pós-Inicialização” (quando aplicativos no grupo de inicialização e alguns serviços atrasados são executados), o período antes do qual a inicialização do Windows começa e o tempo BIOS podem ser significativos. Em nossos esforços não perdemos de vista aquilo que os usuários consideram como sendo representativo da inicialização.

Antes de discutir alguns de nossos esforços quanto ao Windows 7, gostaríamos de destacar que há um envolvimento considerável com nossos parceiros. Ao verificar dezenas de sistemas encontramos várias oportunidades de melhorar e fizemos alterações. Para ilustrar isso, considerem os dados seguintes retirados de um sistema real. Conforme o sistema chegou até nós, a configuração do produto recém-adquirido apresentou um tempo de inicialização de aproximadamente 45 segundos. Uma instalação simples do Vista SP1 no mesmo sistema produziu um segundo tempo consistente de instalação de aproximadamente 23 segundos. Claro que, em se tratando de uma instalação simples, houve muito menos processos, serviços e um conjunto ligeiramente diferente de drivers (principalmente as versões eram diferentes). Entretanto, pudemos pegar a configuração do produto novo e otimizá-la para produzir um tempo de inicialização consistente de aproximadamente 21 segundos, mais ou menos 2 segundos mais rápida do que a instalação simples porque algumas alterações de driver/BIOS puderam ser feitas na configuração otimizada.

Para este mesmo sistema, vale notar que o retorno do modo de suspensão é de aproximadamente 2 segundos, atingindo uma experiência quase instantânea. Encorajamos que os usuários escolham o modo de suspensão como uma alternativa à inicialização.

Como um exemplo de esforço do Windows 7, estamos trabalhando bastante com serviços de sistemas. Queremos reduzir drasticamente seu número, bem como reduzir suas demandas de CPU, disco e memória. Nossa perspectiva quanto a isso é simples: se um serviço não é absolutamente necessário, não deveria estar iniciando e deveria haver um gatilho para lidar com estados raros a fim de que o serviço só opere nestes casos.

Claro que os serviços existem para completar as experiências de usuário, mesmo as incomuns. Considere a situação onde um teclado, mouse ou HW tablet é adicionado ao sistema enquanto este estava desligado. Se este novo HW não for detectado e drivers não forem instalados para fazer com que ele funcione durante a inicialização, então é possível que o usuário não possa colocar suas credenciais e fazer seu login na máquina. Para um usuário qualquer, isso pode ser muito raro ou nunca acontecer. Para uma população de centenas de milhões de usuários, isso pode acontecer o suficiente para justificar ter mecanismos de suporte. No Windows 7, daremos suporte a esse cenário e muitos outros com menos serviços de início automático porque foram criados mecanismos mais abrangentes de acionamento de serviços.

Conforme observado acima, a inicialização de dispositivos e drivers também pode ter contribuição significativa. No Windows 7, nos concentramos bastante em aumentar o paralelismo da inicialização de drivers. Este paralelismo aumentado diminui a probabilidade de que alguns dispositivos/drivers mais lentos tenham impacto sobre o tempo geral de inicialização.

Em termos da leitura de arquivo a partir do disco, o Windows 7 possui melhorias na lógica e mecanismos de "pré-busca". A pré-busca foi introduzida no Windows XP. Já que os discos de hoje possuem características de desempenho diferentes, a lógica de agendamento sofreu algumas mudanças para manter o ritmo e eficiência. Estamos, por exemplo, avaliando o mecanismo de pré-busca nos dispositivos de armazenamento robustos de hoje, indo tão longe quanto questionar se é realmente necessário. No fim das contas, a métrica de análise e desempenho captada num sistema individual irá determinar dinamicamente até que ponto utilizamos o pré-busca.

Também existem experiências de diagnóstico melhoradas no Windows 7. Buscamos identificar rapidamente problemas específicos em sistemas distintos e oferecer ajuda para resolver esses problemas. Acreditamos que essa é uma boa maneira de informar os usuários quanto a alguns problemas, tais como ter aplicativos de inicialização demais ou a presença de scripts de logon extensos voltados para domínio. Como muitos usuários sabem, ter aplicativos de inicialização demais freqüentemente resulta num tempo longo de inicialização. Poucos usuários, entretanto, conhecem as implicações de ter scripts de inicialização ou logon problemáticos. No Windows XP, Vista e Windows 7 o comportamento padrão do Windows é fazer o logon do usuário até a área de trabalho sem esperar pela execução de uma inicialização de rede ou scripts potencialmente extensos. Em ambientes corporativos, entretanto, é possível que as organizações de IT alterem o padrão e configurem os sistemas dos clientes para entrar em contato com servidores através da rede. Infelizmente, ao configurar os clientes para executar scripts, os administradores de domínio tipicamente o fazem de forma simultânea e obstrutiva. O resultado é que a inicialização e logon podem levar vários minutos se existirem problemas de tempo limite de sistemas de rede ou de autenticação do servidor. Além disso, esses scripts podem executar vários programas dispendiosos que consomem recursos de CPU, disco e memória.

Além de trabalhar com recursos específicos e serviços do Windows 7, estamos compartilhando ferramentas, testes e dados com nossos parceiros. As ferramentas também estão disponíveis para entusiastas. As ferramentas que utilizamos internamente pra detectar e corrigir problemas de inicialização estão hoje disponíveis de graça aqui como parte do Kit de Ferramentas de Desempenho do Windows. Apesar de não serem adequadas para a maioria dos usuários, as ferramentas estão se mostrando muito úteis para alguns.

Um dos assuntos dos quais queremos falar futuramente, e sabemos que já se escreveu muito sobre ele e que já foi objeto de muitos comentários, é o papel que softwares adicionais além da instalação inicial do Windows têm no desempenho geral do sistema. Toda essa amplitude e profundidade de softwares para Windows significa que alguns deles não terão a alta qualidade que se espera, apesar de a grande maioria ser muito boa. A Microsoft tem que continuar a oferecer as ferramentas para os desenvolvedores escreverem softwares de alto desempenho e as ferramentas para que os usuários finais identifiquem o software em seu sistema que poderá contribuir para um desempenho abaixo das expectativas. O próprio Windows tem que continuar a melhorar as táticas defensivas que utiliza para isolar e informar o usuário final quanto a softwares que podem contribuir para desempenho insuficiente.

Outro possível assunto futuro se refere a alterações de configuração que um usuário pode fazer em seu próprio sistema. Muitas alterações recomendadas não ajudam de forma alguma. Por exemplo, descobrimos que a grande maioria das recomendações de “ajuste de registro” era falsa. Aqui está uma das minhas favoritas. Se vocês fizerem uma busca na internet por “Habilitar Superfetch no XP” encontrarão muitos resultados. Vocês podem ter certeza de que não há uma funcionalidade Superfetch no Windows XP e nenhum benefício em configurar a chave de registro como mostrado nesses sites. Há muitas recomendações semelhantes a esse mito com relação ao agendamento de CPU, gerenciamento de memória e outras alterações de configuração que não ajudam no desempenho do sistema.

A inicialização é um dos tópicos dentro do desempenho. Conforme descrito nos artigos anteriores, queremos continuar a discussão em torno desse assunto. Quais elementos vocês gostariam de discutir mais?

Michael Fortin