3.2. Poder de Processamento

Frequentemente conhecido como poder da CPU, ciclos da CPU e vários outros nomes, poder de processamento é a habilidade do computador em manipular dados. O poder de processamento varia de acordo com a arquitetura (e velocidade do relógio) da CPU — geralmente, as CPUs com velocidades de relógio maiores que suportam tamanhos de palavra maiores têm maior poder de processamento que as CPUs mais lentas suportando tamanhos de palavra menores.

3.2.1. Fatos Sobre o Poder de Processamento

Aqui estão os dois principais fatos sobre o poder de processamento que você deve ter em mente:

O poder de processamento é fixo, de modo que a CPU só pode atingir tal velocidade. Por exemplo: se você precisa adicionar dois números (uma operação que requer apenas uma instrução para a máquina, na maioria das arquiteturas), uma determinada CPU pode fazê-la somente a uma velocidade. Com raras exceções, não é possível diminuir a taxa com a qual a CPU processa as instruções, muito menos aumentá-la.

O poder de processamento é fixo também de uma outra maneira: é finito. Ou seja, há limites para os tipos de CPUs que podem ser conectadas a um determinado computador. Alguns sistemas são capazes de suportar uma grande variedade de CPUs com velocidades diferentes, enquanto outros podem não ser atualizáveis (upgradeable)[1].

O poder de processamento não pode ser armazenado para uso posterior. Em outras palavras, se uma CPU pode processar 100 milhões de instruções em um segundo, um segundo de tempo ocioso equivalem a 100 milhões de instruções de processamento que foram disperdiçadas.

Se examinarmos estes fatos sob uma perspectiva ligeiramente diferente, uma CPU "produz" um fluxo de instruções executadas a uma taxa fixa. E, se a CPU "produz" instruções executadas, isto siginifca que alguma outra coisa deve "consumí-las". A próxima seção define estes consumidores.

3.2.2. Consumidores do Poder de Processamento

Há dois consumidores principais do poder de processamento:

3.2.2.1. Aplicações

Os consumidores mais óbvios do poder de processamento são as aplicações e os programas que você quer que o computador rode. De uma planilha de cáculo a um banco de dados, as aplicações são as razões pelas quais você tem um computador.

Um sistema com uma CPU pode fazer apenas uma coisa de cada vez. Consequentemente, se a sua aplicação está rodando, todo o resto do sistema não está. Obviamente, o contrário também é verdade — se alguma outra coisa além da sua aplicação está rodando, então sua aplicação não está fazendo nada.

Mas, como é que muitas aplicações diferentes aparentemente rodam ao mesmo tempo num sistema operacional moderno? A resposta é que estes são sistemas operacionais multi-tarefas. Em outras palavras, eles criam a ilusão de que muitas coisas diferentes estão acontecendo simultaneamente, apesar de isto não ser possível de fato. O truque é dar a cada processo o tempo rodando na CPU de uma fração de segundo antes de dar a próxima fração de um segundo a um outro processo. Se estas trocas de contexto ocorrerem com bastante frequência, tem-se a ilusão de que múltiplas aplicações estão rodando simultaneamente.

Obviamente, as aplicações fazem outras coisas além de manipular dados usando a CPU. Elas podem esperar pelo input do usuário, assim como desempenhar I/O a dispositivos como drives de disco e displays gráficos. Quando estes eventos ocorrem, a aplicação não precisa mais da CPU. Nestas horas, a CPU pode ser usada para outros processos rodando outras aplicações, sem atrasar a aplicação em espera.

Além disso, a CPU pode ser usada por um outro consumidor do poder de processamento: o próprio sistema operacional.

3.2.2.2. O Sistema Operacional

É difícil determinar o quanto de poder de processamento é consumido pelo sistema operacional porque este utiliza uma mistura de códigos a nível de processo e a nível de sistema para desempenhar seu trabalho. Apesar de ser fácil, por exemplo, usar um monitor de processos para determinar o que os processos rodando um daemon ou serviço estão fazendo, não é fácil determinar o quanto de poder de processamento está sendo consumido pelo processamento relacionado a I/O a nível do sistema (o que normalmente é feito no contexto do processo requisitando a I/O.)

Em geral, é possível dividir esta espécie de sobrecarga do sistema em dois tipos:

  • Manutenção (housekeeping) do sistema operacional

  • Atividades relacionadas a processos

A manutenção do sistema operacional inclui atividades como o agendamento de processos e a administração da memória, enquanto as atividades relacionadas a processos incluem quaisquer processos que suportam o sistema operacional, tais como o registro de eventos do sistema ou nivelamento do cache I/O.

3.2.3. Suprindo a Falta da uma CPU

Quando há poder de processamento insuficiente para o trabalho que precisa ser feito, você tem duas opções:

3.2.3.1. Reduzir a Carga

Reduzir a carga da CPU é algo que pode ser feito sem nenhum custo adicional. Basta identificar os aspectos da carga do sistema sob seu controle que podem ser reduzidos. Há três áreas nas quais focar:

  • Reduzir a sobrecarga do sistema operacional

  • Reduzir a sobrecarga das aplicações

  • Eliminar as aplicações inteiramente

3.2.3.1.1. Reduzir a Sobrecarga do Sistema Operacional

Para reduzir a sobrecarga do sistema operacional, é necessário examinar a carga atual do sistema e determinar quais aspectos desta resultam em quantidades desordenadas de sobrecarga. Estas áreas podem incluir:

  • Reduzir a necessidade do agendamento de processos frequente

  • Reduzir a quantidade das I/O desempenhadas

Não espere milagres; num sistema razoavelmente bem configurado, é improvável notar um grande aumento de desempenho ao tentar reduzir a sobrecarga do sistema operacional. Isto se deve ao fato de que um sistema razoavelmente bem configurado, por definição, resulta numa quantidade mínima de sobrecarga. No entanto, se o seu sistema está rodando com muito pouca RAM, por exemplo, você talvez consiga reduzir a sobrecarga aliviando a falta de RAM.

3.2.3.1.2. Reduzir a Sobrecarga das Aplicações

Reduzir a sobrecarga de uma aplicação significa garantir que esta tenha tudo o que precisa para rodar bem. Algumas aplicações apresentam comportamentos bem diferentes sob ambientes diferentes — por exemplo: uma aplicação pode tornar-se altamente integrada ao computador ao processar certos tipos de dados, e com outros dados não.

Deve-se manter em mente que você precisa entender sobre as aplicações rodando no seu sistema se pretende que elas rodem da maneira mais eficiente possível. Frequentemente, isto inclui trabalhar com seus usuários, e/ou com os desenvolvedores da sua empresa, para ajudar a descobrir maneiras pelas quais as aplicações podem rodar mais eficientemente.

3.2.3.1.3. Eliminar Aplicações Inteiramente

Dependendo da sua empresa, esta tática pode não estar disponível, já que frequentemente não é de responsabilidade do administrador de sistemas ditar quais aplicações devem ou não rodar. Entretanto, se você puder identificar aplicações que são "CPU hogs" conhecidas, pode influenciar os tomadores de decisão a aposentá-las.

Executar esta tarefa provavelmente envolverá mais alguém além de você. Os usuários afetados devem certamente fazer parte deste processo; em muitos casos eles talvez tenham o conhecimento e o poder político para efetuar as mudanças no âmbito das aplicações.

DicaDica
 

Tenha em mente que uma aplicação talvez não precise ser eliminada de todos os sistemas de sua empresa. Você pode transferir uma determinada aplicação que requer muito da CPU de um sistema sobrecarregado para outro sistema quase ocioso.

3.2.3.2. Aumentar a Capacidade

Obviamente, se não for possível reduzir a demanda de poder de processamento, você deve encontrar outras maneiras de aumentá-lo. É necessário dinheiro para fazer isso, mas pode ser feito.

3.2.3.2.1. Atualizando a CPU (upgrade)

A tática mais simples é determinar se a CPU do seu sistema pode ser atualizada. O primeiro passo é determinar se a CPU atual pode ser removida. Alguns sistemas (principalmente laptops) têm CPUs soldadas, impossibilitando uma atualização. O resto, no entanto, tem CPUs anexas, o que possibilita as atualizações — pelo menos em tese.

Em seguida, você deve pesquisar se existe uma CPU mais rápida para a configuração de seu sistema. Por exemplo: se você tem uma CPU de 1GHz e há uma unidade de 2GHz do mesmo tipo, pode ser possível efetuar a atualização.

Finalmente, você deve determinar a velocidade máxima do relógio suportada pelo seu sistema. Continuando o exemplo acima, mesmo se existir uma CPU do tipo apropriado de 2GHz, não será possível trocar a CPU se seu sistema suportar somente processadores de 1GHz ou menos.

Se você concluir que não é possível instalar uma CPU mais rápida no seu sistema, suas opções talvez estejam limitadas à troca de placas-mãe ou até mesmo ao forklift upgrade (troca completa do computador) mencionado anteriormente.

No entanto, algumas configurações do sistema possibilitam uma tática ligeiramente diferente. Ao invés de trocar a CPU atual, por que não adicionar outra?

3.2.3.2.2. Será que o Multiprocessamento Simétrico (Symmetric Multiprocessing) Serve para Você?

O multiprocessamento simétrico (também conhecido como SMP, Symmetric Multiprocessing) possibilita que um sistema de computador tenha mais de uma CPU compartilhando todos os recursos do sistema. Isto significa que, ao contrário do sistema com um processador, um sistema SMP pode ter mais de um processo rodando ao mesmo tempo.

À primeira vista, este parece ser um sonho para o administrador de sistemas. Antes de mais nada, o SMP possibilita aumentar o poder da CPU de um sistema, mesmo que não exista CPUs com velocidades de relógio maiores — basta adicionar outra CPU. Entretanto, esta flexibilidade traz algumas desvantagens.

A primeira desvantagem é que nem todos os sistemas são capazes de efetuar a operação SMP. Seu sistema precisa ter uma placa-mãe desenvolvida para suportar processadores múltiplos. Se não for o caso, será necessário uma atualização da placa-mãe (no mínimo).

A segunda desvantagem é que o SMP aumenta a sobrecarga do sistema. Isto faz sentido se pararmos para pensar - tendo mais CPUs para agendar trabalho, o sistema operacional requer mais ciclos da CPU para a sobrecarga. Outro aspecto é que, com CPUs múltiplas, pode haver mais contenção dos recursos do sistema. Devido estes fatores, atualizar um sistema com dois processadores para uma unidade de quatro processadores não resulta num aumento de 100% do poder da CPU. De fato, dependendo do hardware atual, da carga e da arquitetura do processador, é possível atingir um estágio no qual a adição de um outro processador pode, na realidade, reduzir o desempenho do sistema.

Um outro aspecto para ter em mente é que o SMP não ajuda cargas de trabalho que consistem de uma aplicação monolítica com um fluxo de execução. Ou seja, se um programa de simulação integrado ao computador roda como um processo e sem encadeamentos, não rodará mais rápido em um sistema SMP do que numa máquina com um processador. De fato, pode até rodar um pouco mais lentamente, devido ao aumento de sobrecarga trazido pelo SMP. Por estes motivos, muitos administradores de sistemas acreditam que o melhor caminho é usar o poder de processamento de um fluxo. Isto oferece o melhor poder de CPU com o menor número de restrições sobre seu uso.

Apesar desta discussão parecer indicar que o SMP nunca é uma boa idéia, há ocasiões nas quais faz sentido. Por exemplo: ambientes que rodam múltiplas aplicações integradas ao computador são boas candidatas para o SMP. O motivo é que as aplicações, que não fazem nada além de computar por períodos longos de tempo, mantêm a contenção entre processos ativos (e, consequentemente, a sobrecarga do sistema operacional) a um mínimo, enquanto os processos mantêm todas as CPUs ocupadas.

Outra coisa sobre o SMP para ter em mente é que o desempenho de um sistema SMP tende a degradar mais graciosamente conforme aumenta a carga do sistema. Isto torna os sistemas SMP conhecidos nos ambientes de servidor e multi-usuário, já que o mix de processos em constante alteração pode impactar menos a carga do sistema todo em uma máquina com multi-processador.

Notas

[1]

Esta situação acarreta no que é chamado de forklift upgrade, o que significa uma troca completa de um computador.