Desempenho do computador - Computer performance

Na computação , o desempenho do computador é a quantidade de trabalho útil realizado por um sistema de computador . Fora de contextos específicos, o desempenho do computador é estimado em termos de precisão, eficiência e velocidade de execução das instruções do programa de computador . Quando se trata de alto desempenho do computador, um ou mais dos seguintes fatores podem estar envolvidos:

  • Alta disponibilidade do sistema de computação ou aplicativo.
  • Largura de banda alta .
  • Tempo curto de transmissão de dados .
  • Definições técnicas e não técnicas

    O desempenho de qualquer sistema de computador pode ser avaliado em termos técnicos mensuráveis, usando uma ou mais das métricas listadas acima. Dessa forma, o desempenho pode ser

    • Comparado com outros sistemas ou o mesmo sistema antes / depois das mudanças
    • Em termos absolutos, por exemplo, para cumprir uma obrigação contratual

    Embora a definição acima se refira a uma abordagem científica e técnica, a seguinte definição dada por Arnold Allen seria útil para um público não técnico:

    A palavra desempenho em desempenho de computador significa a mesma coisa que desempenho significa em outros contextos, ou seja, significa "quão bem o computador está fazendo o trabalho que deveria fazer?"

    Como um aspecto da qualidade do software

    O desempenho do software de computador , particularmente o tempo de resposta do aplicativo de software , é um aspecto da qualidade do software que é importante nas interações homem-computador .

    Engenharia de Performance

    A engenharia de desempenho dentro da engenharia de sistemas abrange o conjunto de funções, habilidades, atividades, práticas, ferramentas e produtos aplicados em cada fase do ciclo de vida de desenvolvimento de sistemas, o que garante que uma solução será projetada, implementada e suportada operacionalmente para atender aos requisitos de desempenho definido para a solução.

    A engenharia de desempenho lida continuamente com compensações entre os tipos de desempenho. Ocasionalmente, um designer de CPU pode encontrar uma maneira de fazer uma CPU com melhor desempenho geral, melhorando um dos aspectos de desempenho, apresentados a seguir, sem sacrificar o desempenho da CPU em outras áreas. Por exemplo, construir a CPU com transistores melhores e mais rápidos .

    No entanto, às vezes levar um tipo de desempenho ao extremo leva a um CPU com pior desempenho geral, porque outros aspectos importantes foram sacrificados para obter um número de aparência impressionante, por exemplo, o clock do chip (veja o mito do megahertz ).

    Engenharia de desempenho de aplicativos

    Application Performance Engineering (APE) é uma metodologia específica dentro da engenharia de desempenho projetada para atender aos desafios associados ao desempenho de aplicativos em ambientes de TI móveis, em nuvem e terrestres cada vez mais distribuídos. Inclui as funções, habilidades, atividades, práticas, ferramentas e produtos aplicados em cada fase do ciclo de vida do aplicativo que garantem que um aplicativo será projetado, implementado e suportado operacionalmente para atender aos requisitos de desempenho não funcionais.

    Aspectos de desempenho

    O desempenho do computador métricas (coisas para medida) incluem disponibilidade , tempo de resposta , a capacidade do canal , a latência , o tempo de conclusão , o tempo de serviço , largura de banda , o rendimento , eficiência relativa , a escalabilidade , o desempenho por watt , taxa de compressão , comprimento de caminho de instruções e velocidade acima . Os benchmarks de CPU estão disponíveis.

    Disponibilidade

    A disponibilidade de um sistema é normalmente medida como um fator de sua confiabilidade - conforme a confiabilidade aumenta, também aumenta a disponibilidade (ou seja, menos tempo de inatividade ). A disponibilidade de um sistema também pode ser aumentada pela estratégia de focar no aumento da testabilidade e manutenção, e não na confiabilidade. Melhorar a capacidade de manutenção é geralmente mais fácil do que a confiabilidade. As estimativas de capacidade de manutenção (taxas de reparo) também são geralmente mais precisas. No entanto, como as incertezas nas estimativas de confiabilidade são, na maioria dos casos, muito grandes, é provável que domine o problema de disponibilidade (incerteza de previsão), mesmo quando os níveis de manutenibilidade são muito altos.

    Tempo de resposta

    O tempo de resposta é a quantidade total de tempo que leva para responder a uma solicitação de serviço. Na computação, esse serviço pode ser qualquer unidade de trabalho, desde um simples IO de disco até o carregamento de uma página da web complexa . O tempo de resposta é a soma de três números:

    • Tempo de serviço - Quanto tempo leva para fazer o trabalho solicitado.
    • Tempo de espera - Quanto tempo a solicitação deve esperar por solicitações enfileiradas antes de ser executada.
    • Tempo de transmissão - quanto tempo leva para mover a solicitação para o computador que está fazendo o trabalho e a resposta de volta para o solicitante.

    Velocidade de processamento

    A maioria dos consumidores escolhe uma arquitetura de computador (normalmente arquitetura Intel IA32 ) para poder executar uma grande base de software pré-existente e pré-compilado. Sendo relativamente desinformados sobre benchmarks de computador, alguns deles escolhem uma CPU particular com base na freqüência de operação (veja o mito do megahertz ).

    Alguns projetistas de sistemas que constroem computadores paralelos escolhem CPUs com base na velocidade por dólar.

    Capacidade do canal

    A capacidade do canal é o limite superior mais rígido na taxa de informações que pode ser transmitida de forma confiável por um canal de comunicação . Pelo teorema da codificação do canal ruidoso , a capacidade do canal de um determinado canal é a taxa de informação limitante (em unidades de informação por unidade de tempo) que pode ser alcançada com probabilidade de erro arbitrariamente pequena.

    A teoria da informação , desenvolvida por Claude E. Shannon durante a Segunda Guerra Mundial , define a noção de capacidade do canal e fornece um modelo matemático pelo qual se pode computá-la. O resultado chave afirma que a capacidade do canal, conforme definido acima, é dada pelo máximo da informação mútua entre a entrada e a saída do canal, onde a maximização é em relação à distribuição de entrada.

    Latência

    Latência é um intervalo de tempo entre a causa e o efeito de alguma mudança física no sistema que está sendo observada. A latência é o resultado da velocidade limitada com a qual qualquer interação física pode ocorrer. Essa velocidade é sempre menor ou igual à velocidade da luz. Portanto, todo sistema físico com dimensões espaciais diferentes de zero experimentará algum tipo de latência.

    A definição precisa de latência depende do sistema que está sendo observado e da natureza da estimulação. Nas comunicações, o limite inferior de latência é determinado pelo meio que está sendo usado para as comunicações. Em sistemas de comunicação bidirecionais confiáveis, a latência limita a taxa máxima em que as informações podem ser transmitidas, pois geralmente há um limite na quantidade de informações que estão "em vôo" a qualquer momento. No campo da interação homem-máquina, a latência perceptível (atraso entre o que o usuário comanda e o momento em que o computador fornece os resultados) tem um forte efeito na satisfação do usuário e na usabilidade.

    Os computadores executam conjuntos de instruções chamados de processo. Em sistemas operacionais, a execução do processo pode ser adiada se outros processos também estiverem em execução. Além disso, o sistema operacional pode agendar quando executar a ação que o processo está comandando. Por exemplo, suponha que um processo comande que a saída de tensão de uma placa de computador seja definida como alto-baixo-alto-baixo e assim por diante a uma taxa de 1000 Hz. O sistema operacional pode escolher ajustar a programação de cada transição (alto-baixo ou baixo-alto) com base em um relógio interno. A latência é o atraso entre a instrução de processo que comanda a transição e o hardware realmente fazendo a transição da tensão de alta para baixa ou de baixa para alta.

    Os projetistas de sistemas que criam sistemas de computação em tempo real desejam garantir a resposta no pior caso. Isso é mais fácil de fazer quando a CPU tem baixa latência de interrupção e quando tem resposta determinística.

    Largura de banda

    Em redes de computadores, a largura de banda é uma medida da taxa de bits dos recursos de comunicação de dados disponíveis ou consumidos, expressa em bits por segundo ou múltiplos deles (bit / s, kbit / s, Mbit / s, Gbit / s, etc.).

    A largura de banda às vezes define a taxa de bits líquida (também conhecida como taxa de bits de pico, taxa de informações ou taxa de bits útil da camada física), capacidade do canal ou a taxa de transferência máxima de um caminho de comunicação físico ou lógico em um sistema de comunicação digital. Por exemplo, os testes de largura de banda medem a taxa de transferência máxima de uma rede de computadores. A razão para esse uso é que, de acordo com a lei de Hartley, a taxa máxima de dados de um link de comunicação física é proporcional à sua largura de banda em hertz, que às vezes é chamada de largura de banda de frequência, largura de banda espectral, largura de banda de RF, largura de banda de sinal ou largura de banda analógica.

    Taxa de transferência

    Em termos gerais, o rendimento é a taxa de produção ou a taxa na qual algo pode ser processado.

    Em redes de comunicação, a taxa de transferência é essencialmente sinônimo de consumo de largura de banda digital. Em redes sem fio ou redes de comunicação celular , a eficiência espectral do sistema em bit / s / Hz / unidade de área, bit / s / Hz / local ou bit / s / Hz / célula, é a taxa de transferência máxima do sistema (taxa de transferência agregada) dividida pelo largura de banda analógica e alguma medida da área de cobertura do sistema.

    Em circuitos integrados, geralmente um bloco em um diagrama de fluxo de dados tem uma única entrada e uma única saída e opera em pacotes discretos de informações. Exemplos de tais blocos são módulos FFT ou multiplicadores binários . Como as unidades de taxa de transferência são o recíproco da unidade para o atraso de propagação , que é 'segundos por mensagem' ou 'segundos por saída', a taxa de transferência pode ser usada para relacionar um dispositivo computacional executando uma função dedicada, como um ASIC ou processador embutido para um canal de comunicação, simplificando a análise do sistema.

    Eficiência relativa

    Escalabilidade

    Escalabilidade é a capacidade de um sistema, rede ou processo de lidar com uma quantidade crescente de trabalho de maneira capaz ou sua capacidade de ser ampliado para acomodar esse crescimento

    Consumo de energia

    A quantidade de energia elétrica usada pelo computador ( consumo de energia ). Isso se torna especialmente importante para sistemas com fontes de energia limitadas, como energia solar, baterias e energia humana.

    Desempenho por watt

    Os designers de sistemas que constroem computadores paralelos , como o hardware do Google , escolhem CPUs com base em sua velocidade por watt de energia, porque o custo de alimentar a CPU supera o custo da própria CPU.

    Para computadores de voos espaciais, a taxa de velocidade de processamento por watt é um critério de desempenho mais útil do que a velocidade de processamento bruta.

    Taxa de compressão

    A compactação é útil porque ajuda a reduzir o uso de recursos, como espaço de armazenamento de dados ou capacidade de transmissão. Como os dados compactados devem ser descompactados para uso, esse processamento extra impõe custos computacionais ou outros por meio da descompactação; esta situação está longe de ser um almoço grátis. A compactação de dados está sujeita a uma compensação de complexidade de espaço-tempo.

    Tamanho e peso

    Este é um importante recurso de desempenho dos sistemas móveis, desde os smartphones que você mantém no bolso até os sistemas embarcados portáteis em uma espaçonave.

    Impacto ambiental

    O efeito de um computador ou computadores no meio ambiente, durante a fabricação e reciclagem, bem como durante o uso. As medições são feitas com o objetivo de reduzir o desperdício, reduzir os materiais perigosos e minimizar a pegada ecológica do computador .

    Contagem de transistores

    A contagem de transistores é o número de transistores em um circuito integrado (IC). A contagem de transistores é a medida mais comum da complexidade do IC.

    Benchmarks

    Como existem tantos programas para testar uma CPU em todos os aspectos de desempenho, foram desenvolvidos benchmarks .

    Os benchmarks mais famosos são os benchmarks SPECint e SPECfp desenvolvidos pela Standard Performance Evaluation Corporation e os benchmarks Certification Mark desenvolvidos pelo Embedded Microprocessor Benchmark Consortium EEMBC .

    Teste de desempenho de software

    Na engenharia de software, o teste de desempenho é, em geral, um teste executado para determinar como um sistema funciona em termos de capacidade de resposta e estabilidade sob uma carga de trabalho específica. Também pode servir para investigar, medir, validar ou verificar outros atributos de qualidade do sistema, como escalabilidade, confiabilidade e uso de recursos.

    O teste de desempenho é um subconjunto da engenharia de desempenho, uma prática emergente da ciência da computação que se esforça para criar desempenho na implementação, design e arquitetura de um sistema.

    Criação de perfis (análise de desempenho)

    Em engenharia de software , o perfil ("perfil de programa", "perfil de software") é uma forma de análise dinâmica de programa que mede, por exemplo, o espaço (memória) ou complexidade de tempo de um programa , o uso de instruções específicas ou frequência e duração das chamadas de função. O uso mais comum das informações de criação de perfil é para auxiliar na otimização do programa .

    A criação de perfil é obtida instrumentando o código-fonte do programa ou sua forma binária executável usando uma ferramenta chamada profiler (ou criador de perfil de código ). Uma série de técnicas diferentes pode ser usada por profilers, como métodos baseados em eventos, estatísticos, instrumentados e de simulação.

    Ajuste de desempenho

    O ajuste de desempenho é a melhoria do desempenho do sistema . Normalmente é um aplicativo de computador, mas os mesmos métodos podem ser aplicados a mercados econômicos, burocracias ou outros sistemas complexos. A motivação para tal atividade é chamada de problema de desempenho, que pode ser real ou antecipado. A maioria dos sistemas responderá ao aumento da carga com algum grau de desempenho decrescente. A capacidade de um sistema de aceitar uma carga mais alta é chamada de escalabilidade , e modificar um sistema para lidar com uma carga mais alta é sinônimo de ajuste de desempenho.

    O ajuste sistemático segue estas etapas:

    1. Avalie o problema e estabeleça valores numéricos que categorizam o comportamento aceitável.
    2. Meça o desempenho do sistema antes da modificação.
    3. Identifique a parte do sistema que é crítica para melhorar o desempenho. Isso é chamado de gargalo .
    4. Modifique essa parte do sistema para remover o gargalo.
    5. Meça o desempenho do sistema após a modificação.
    6. Se a modificação melhorar o desempenho, adote-a. Se a modificação piorar o desempenho, coloque-o de volta no estado em que estava.

    Desempenho percebido

    Desempenho percebido, em engenharia da computação, refere-se à rapidez com que um recurso de software parece executar sua tarefa. O conceito se aplica principalmente aos aspectos de aceitação do usuário .

    A quantidade de tempo que um aplicativo leva para iniciar, ou um arquivo para baixar, não é agilizado com a exibição de uma tela de inicialização (consulte a tela inicial) ou uma caixa de diálogo de andamento do arquivo. No entanto, ele satisfaz algumas necessidades humanas: parece mais rápido para o usuário, além de fornecer uma dica visual para informá-lo de que o sistema está atendendo à solicitação.

    Na maioria dos casos, aumentar o desempenho real aumenta o desempenho percebido, mas quando o desempenho real não pode ser aumentado devido a limitações físicas, técnicas podem ser usadas para aumentar o desempenho percebido.

    Equação de Desempenho

    A quantidade total de tempo ( t ) necessária para executar um programa de benchmark específico é

    , ou equivalente

    Onde

    • é "o desempenho" em termos de tempo de execução
    • é o número de instruções realmente executadas (o comprimento do caminho da instrução ). A densidade de código do conjunto de instruções fortemente afeta N . O valor de N pode ser determinado exatamente usando um simulador de conjunto de instruções (se disponível) ou por estimativa - ela mesma baseada parcialmente na distribuição de frequência estimada ou real de variáveis ​​de entrada e examinando o código de máquina gerado a partir de um compilador HLL . Não pode ser determinado a partir do número de linhas do código-fonte HLL. N não é afetado por outros processos em execução no mesmo processador. O ponto significativo aqui é que o hardware normalmente não controla (ou pelo menos torna facilmente disponível) um valor de N para programas executados. O valor, portanto, só pode ser determinado com precisão pela simulação do conjunto de instruções, o que raramente é praticado.
    • é a frequência do clock em ciclos por segundo.
    • é a média de ciclos por instrução (CPI) para este benchmark.
    • é a média de instruções por ciclo (IPC) para este benchmark.

    Mesmo em uma máquina, um compilador diferente ou o mesmo compilador com diferentes opções de otimização do compilador pode alterar N e CPI - o benchmark executa mais rápido se o novo compilador pode melhorar N ou C sem tornar o outro pior, mas muitas vezes há uma compensação entre eles - é melhor, por exemplo, usar algumas instruções complicadas que demoram muito para serem executadas ou usar instruções que são executadas muito rapidamente, embora seja necessário mais delas para executar o benchmark?

    Um designer de CPU geralmente é necessário para implementar um conjunto de instruções específico e, portanto, não pode alterar N. Às vezes, um designer se concentra em melhorar o desempenho fazendo melhorias significativas em f (com técnicas como pipelines mais profundos e caches mais rápidos), enquanto (espero) não sacrifica muito C - levando a um design de CPU de demônio de velocidade . Às vezes, um designer se concentra em melhorar o desempenho fazendo melhorias significativas no CPI (com técnicas como execução fora de ordem , CPUs superescalares , caches maiores, caches com taxas de acerto melhoradas , previsão de ramo melhorada , execução especulativa , etc.), enquanto ( esperançosamente) não sacrificando muita frequência de clock - levando a um design de CPU cerebral. Para um determinado conjunto de instruções (e, portanto, N fixo) e processo de semicondutor, o desempenho de thread único máximo (1 / t) requer um equilíbrio entre as técnicas de brainiac e técnicas de speedracer.

    Veja também

    Referências

    1. ^ Computer Performance Analysis with Mathematica por Arnold O. Allen, Academic Press, 1994. $ 1.1 Introdução, página 1.
    2. ^ Medindo a similaridade do programa: experimentos com SPEC CPU Benchmark Suites , CiteSeerX  10.1.1.123.501
    3. ^ Wescott, Bob (2013). The Every Computer Performance Book, Capítulo 3: Leis úteis . CreateSpace . ISBN 1482657759.
    4. ^ Saleem Bhatti. "Capacidade do canal" . Notas de aula para M.Sc. Redes de Comunicação de Dados e Sistemas Distribuídos D51 - Comunicações e Redes Básicas . Arquivado do original em 21/08/2007.
    5. ^ Jim Lesurf. "Os sinais parecem ruído!" . Informação e medição, 2ª ed .
    6. ^ Thomas M. Tampa, Joy A. Thomas (2006). Elementos da Teoria da Informação . John Wiley & Sons, Nova York.
    7. ^ "Cópia arquivada" . Arquivado do original em 27/03/2005 . Página visitada em 21/01/2009 .CS1 maint: cópia arquivada como título ( link )[1]
    8. ^ DJ Shirley; e MK McLelland. "O Computador de Voo Espacial SC-7 RISC de Próxima Geração" . p. 2
    9. ^ a b Paul DeMone. "O incrível encolhimento da CPU". 2004. [2] Arquivado em 31/05/2012 na Wayback Machine
    10. ^ "Brainiacs, Speed ​​Demons, and Farewell" por Linley Gwennap