quinta-feira, 26 de março de 2015

Desempenho





O desempenho do disco rígido é um factor que influencia muito no desempenho global do sistema, determinando o tempo de carregamento das aplicações e arquivos grandes, e até mesmo a velocidade de acesso ao arquivo de troca. Para ser carregado um programa ou acedido qualquer outro dado, é preciso primeiramente transferi-lo do disco rígido para a memória. Pouco adianta ter um processador ou memórias ultra-rápidos, se a todo momento eles tiverem que esperar por dados a serem transmitidos pelo disco rígido. Depois da quantidade de memória RAM e cache, o disco Rígido é talvez o componente que mais afecta o desempenho do computador, rivalizando até mesmo com o processador.


As diferentes marcas e modelos de discos rígidos que existem à venda no mercado apresentam desempenhos bem diferentes uns dos outros. Não é fácil medir o desempenho de um disco rígido, pois o desempenho do disco é determinado por um conjunto de vários itens e não é nada fácil tentar resumí-lo a um único número.

Nenhum programa de benchmark que existe actualmente é muito preciso para medir a performance de um disco rígido, pois os resultados acabam sempre sendo contaminados pela performance do resto do equipamento. Se você medir o desempenho de um disco rígido instalado num 233 MMX, e em seguida medir o desempenho do mesmo disco instalado num Pentium III 600, verá que os resultados serão bem mais altos. Além disso, estes testes privilegiam sempre alguns factores, como o tempo de acesso, desprezando outros factores igualmente importantes.

Para piorar ainda mais este quadro, os fabricantes têm o péssimo hábito de vender discos rígidos informando a capacidade máxima de transferência de dados da controladora, e não a do disco.

Isso é completamente irreal, pois uma controladora UDMA 33, por exemplo, transmite dados numa velocidade de 33 MB/s, enquanto a velocidade real do disco fica geralmente em torno de 10 ou 15 MB/s. Outras vezes é divulgado apenas o tempo de acesso, e muitos acabam concluindo que o disco A é melhor do que o disco B, simplesmente por ter um tempo de acesso de 9 milissegundos, enquanto o outro tem tempo de acesso de 9.5 milissegundos. Para esclarecer um pouco melhor este assunto, vou analisar agora os diferentes factores que determinam o desempenho de um disco rígido. Pesquisando nos sites dos fabricantes você quase sempre encontrará estas especificações:

Tempo de Busca (Seek Time)
Este é um factor importante na performance geral do disco, pois é o tempo que a cabeça de leitura demora para ir de uma trilha à outra do disco. Este tempo é um pouco difícil de determinar com exactidão, pois o tempo que a cabeça demora para ir da trilha 50 à trilha 100, deslocando-se 50 trilhas, por exemplo, não é 5 vezes maior que o demorado para ir da trilha 50 à trilha 60, deslocando-se 10 trilhas.

Você não demora 5 vezes mais tempo para ir a um local distante 5 quilómetros da sua casa, do que para ir a um local distante apenas 1 quilómetro, pois além do tempo necessário para percorrer a distância, existe o tempo de ligar o carro, abrir a porta da garagem, estacionar o carro, etc.

Assim, para ir da trilha 50 à 60, as cabeças de leitura e gravação poderiam levar 4 milissegundos, levando apenas 10 para ir da cabeça 50 à 100, por exemplo. Estes valores variam em cada marca e modelo de disco rígido, mas quanto menores forem os tempos, melhor será a performance.

Tempo de Latência (Latency Time)
Dentro do disco rígido, os discos magnéticos giram continuamente. Por isso, dificilmente os sectores a serem lidos estarão sob a cabeça de leitura/gravação no exacto momento de executar a operação, podendo, no pior dos casos, ser necessário uma volta completa do disco até o sector desejado passar novamente sob a cabeça de leitura.

O tempo de latência é tão importante quanto o tempo de busca. Felizmente, ele é fácil de ser calculado, bastando dividir 60 pela velocidade de rotação do disco rígido, medida em RPM (rotações por minuto), e multiplicar por 1000. Teremos então o tempo de latência em milissegundos. Um disco rígido de 5200 RPM, por exemplo, terá um tempo de latência de 11.5 milissegundos (o tempo de uma rotação), já que 60 ÷ 5200 x 1000 = 11.5 

Geralmente é usado o tempo médio de latência, que corresponde à metade de uma rotação do disco, assumindo que os clusters desejados estarão, em média, a meio caminho do cabeçote. Um disco rígido de 5200 RMP teria um tempo de latência médio de 5.75 milissegundos.

Tempo de Acesso (Access Time)
O tempo de acesso, é o tempo médio que o disco demora para acessar um sector localizado em um local aleatório do disco. Este tempo é um misto do tempo de busca e do tempo de latência do disco rígido, significando o tempo que o braço de leitura demora para chegar a uma determinada trilha, somado com o tempo que o disco demora para girar e chegar ao sector certo. O tempo de acesso nos discos rígidos mais modernos gira em torno de 10 a 7 milissegundos (quanto mais baixo melhor).

Head Switch Time
Um disco rígido é composto internamente de vários discos. Naturalmente, temos uma cabeça de leitura para cada disco, sendo os dados gravados distribuídos entre eles.

Como as cabeças de leitura são fixas, caso seja necessário ler dois arquivos, um encontrado na face 1 e outro na face 3, por exemplo, a controladora activará a cabeça de leitura responsável pela face 1, lerá o primeiro arquivo e, em seguida, activará a cabeça responsável pela face 3, lendo o segundo arquivo. O termo “Head Switch Time”, pode ser traduzido como “tempo de mudança entre as cabeças de leitura”, por ser justamente o tempo que o disco leva para mudar a leitura de uma cabeça para outra. Este tempo é relativamente pequeno e não influencia tanto quanto o tempo de acesso e a densidade.

Taxa de Transferência Interna (Internal Transfer Rate)
De todos os factores que discutimos até agora, provavelmente este é o mais complicado, pois é o que envolve mais variáveis. Uma definição simplista sobre a taxa de transferência interna, seria a quantidade de dados que podem ser lidos por segundo pela cabeça de leitura.

Porém, vários factores podem distorcer esta medição. Se os arquivos estiverem fragmentados, ou se for necessário ler vários arquivos gravados em setores distantes uns dos outros, a taxa de transferência será muito menor do que ao ler um grande arquivo gravado sequencialmente.

Se você está ouvindo uma música gravada no disco rígido, os dados a serem acessados (presumindo que o disco esteja desfragmentado) provavelmente estarão em sequência no disco, aumentando a taxa de transferência. Se você porém começar a aceder a dados distribuídos aleatoriamente pela superfície do disco, acedendo vários nomes de um grande banco de dados, por exemplo, então a taxa será muito menor.

Quando houver referências à “Internal Transfer Rate” nas especificações de um disco rígido, pode ter certeza de tratar-se da velocidade de leitura quando lidos sectores sequenciais.

Cache (Buffer)
Os discos rígidos actuais possuem uma pequena quantidade de memória cache embutida na controladora, que executa várias funções com o objectivo de melhorar o desempenho do disco rígido.

Geralmente ao ler um arquivo, serão lidos vários sectores sequenciais. A forma mais rápida de fazer isso é naturalmente fazer com que a cabeça de leitura leia de uma vez todos os sectores da trilha, passe para a próxima trilha seguinte, passe para a próxima e assim por diante. Isso permite obter o melhor desempenho possível.

O problema é que na prática não é assim que funciona. O sistema pede o primeiro sector do arquivo e só solicita o próximo depois de recebê-lo e certificar-se de que não existem erros.

Se não houvesse nenhum tipo de buffer, a cabeça de leitura do disco rígido acabaria tendo que passar várias vezes sobre a mesma trilha, lendo um sector a cada passagem, já que não daria tempo de ler os sectores sequencialmente depois de todo tempo perdido antes de cada novo pedido.

Graças ao cache, este problema é resolvido, pois a cada passagem a cabeça de leitura lê todos os sectores próximos, independentemente de terem sido solicitados ou não. Após fazer sua verificação de rotina, o sistema solicitará o próximo sector, que por já estar carregado no cache será fornecido em tempo recorde.

No cache ficam armazenados também últimos dados acedidos pelo processador, permitindo que um dado solicitado repetidamente possa ser retransmitido a partir do cache, dispensando uma nova e lenta leitura dos dados pelas cabeças de leitura. Este sistema é capaz de melhorar assustadoramente a velocidade de acesso aos dados quando estes forem repetitivos, o que acontece com frequência em servidores de rede ou quando é usada memória virtual.

Os dados lidos pelas cabeças de leitura, originalmente são gravados no cache, e a partir dele, transmitidos através da interface IDE ou SCSI. Caso a interface esteja momentaneamente congestionada, os dados são acumulados no cache e, em seguida, transmitidos de uma vez quando a interface fica livre, evitando qualquer perda de tempo durante a leitura dos dados.

Apesar do seu tamanho reduzido, geralmente de 512 ou 1024 Kbytes, o cache consegue acelerar bastante as operações de leitura de dados. Claro que quanto maior e mais rápido for o cache, maior será o ganho de performance.

Além do cache localizado na placa lógica do HD, a maioria dos sistemas operacionais, incluindo claro o Windows 95/98/2000/NT, reservam uma pequena área da memória RAM para criar um segundo nível de cache de disco. Como no caso de um processador, quanto mais cache, melhor é o desempenho. O tamanho do cache de disco utilizado pelo Windows pode ser configurado através do ícone “Sistema” do painel de controle, basta aceder à guia “Performance”.

Temos três opções: “Sistema móvel ou de encaixe”, “Computador Desktop” e “Servidor de rede”.

A primeira opção usa apenas 256 KB da memória RAM para o cache de disco, e é recomendável para computadores com apenas 8 MB de memória. A opção de computador desktop é o valor default e reserva 1 MB para o cache de disco, sendo a ideal para computadores com 12 ou 16 MB de memória. A opção de servidor de rede reserva 2 MB. Esta opção melhora perceptivelmente a velocidade de acesso a disco em computadores com 24 MB ou mais de memória RAM.

O uso do cache de disco é o factor que mais distorce os resultados dos benchmarks, pois o programa não tem como saber se um dado provém de um acesso ao cache ou de uma leitura física. Os testes de disco mais demorados utilizam arquivos grandes para diminuir este problema, pois como o cache armazena apenas 1 ou 2 MB de dados, a distorção ao ser lido um arquivo de, digamos, 50 MB seria muito pequena. Uma dica: não confie em benchmarks que fazem testes rápidos como o Norton, Wintune, etc., os resultados fornecidos por estes programas são tão precisos quanto jogar dados, simplesmente não devem ser levados a sério. Você pode achar bons programas de Benchmark no site da Ziff Davis, estes são os mesmos programas utilizados para fazer os testes da PC Gamers Americana. Os programas podem ser comprados por preços módicos ou baixados gratuitamente (não se surpreenda se forem mais de 100 MB cada) http://www.ziffdavis.com/properties/centralproduct/zdbench.htm
 
Densidade
A densidade dos platers de um disco rígido é outro factor com enorme impacto na performance.

Quanto maior for a densidade, menor será o espaço a ser percorrido pela cabeça de leitura para localizar um determinado sector, pois os dados estarão mais próximos uns dos outros. A densidade pode ser calculada muito facilmente, bastando dividir a capacidade total do disco pela quantidade de cabeças de leitura (e consequentemente o número de faces de disco).

Um disco rígido de 4 Gigabytes e 4 cabeças de leitura, possui uma densidade de 1 Gigabyte por face de disco, enquanto que outro disco, também de 4 Gigabytes, porém com 6 cabeças de leitura, possui uma densidade bem menor, de apenas 666 Megabytes por face de disco.

A densidade influência directamente nos tempos de acesso e de latência do disco rígido, além disso, com um número menor de cabeças de leitura, o tempo perdido com o Head Switch também é menor.

Muitas vezes encontramos no mercado discos rígidos da mesma capacidade, porém, com densidades diferentes. Neste caso, quase sempre o disco rígido com maior densidade utilizará tecnologias mais recentes, sendo por isso mais rápido.
 
Velocidade da Interface
A interface determina a velocidade máxima de transferência, mas não necessariamente a performance do disco rígido. Em geral, a interface é sempre muito mais rápida do que a taxa de transferência interna alcançada pelo disco rígido. Porém, em muitas situações, a interface IDE fica momentaneamente congestionada, deixando de transmitir dados. Nestas situações os dados são acumulados no buffer do disco rígido e, em seguida, transmitidos de uma vez quando a interface fica livre.

Isto pode ocorrer em duas situações: quando temos dois discos instalados na mesma porta IDE e os dois discos são acedidos simultaneamente, ou quando o barramento PCI fica congestionado (já que as portas IDE compartilham os 133 MB/s com todos os demais periféricos PCI instalados).

Nestas situações, ter uma interface mais rápida irá permitir que os dados armazenados no cache sejam transferidos mais rápido. Porém, em situações normais, o desempenho ficará limitado à taxa de transferência interna do disco rígido, que mesmo no caso de um disco rígido topo de linha, lendo sectores sequenciais, dificilmente chega perto de 20 MB/s.

O simples facto de passar a usar DMA 66 no lugar de UDMA 33, não irá alterar quase nada o desempenho do disco em aplicações reais, pelo menos enquanto não tivermos discos rígidos capazes de manter taxas de transferência internas próximas de 30 MB/s, o que provavelmente só deve acontecer por volta de 2002. O UDMA 66 veio com o objectivo de ampliar o limite de transferência das interfaces IDE, abrindo caminho para o futuro lançamento de discos rígidos muito mais rápidos, que possam trabalhar sem limitações por parte da interface, mas não é de se esperar que um velho disco rígido de 6.4 ou algo parecido, fique mais rápido só por causa da interface mais rápida. Não adianta melhorar a qualidade da estrada se o carro não anda.

Marca e modelo x Capacidade
Muitos modelos de discos rígidos são fabricados em várias capacidades diferentes; o Quantum Fireball Plus KA, por exemplo, pode ser encontrado em versões de 9.1 e 18.2 GB. Neste caso, muda apenas o número de platters e cabeças de leitura, ao invés de ter apenas um platter e duas cabeças de leitura, o disco passa a ter dois platters e quatro cabeças, porém, a velocidade de rotação, densidade etc. continuam as mesmas.

Neste caso, apesar da capacidade de armazenamento aumentar, o desempenho cairá um pouco em relação à versão de menor capacidade, pois com mais cabeças de leitura será perdido mais tempo com o Head Switch time e, além disso, o cache de disco irá tornar-se menos eficiente, já que teremos a mesma quantidade de cache para uma quantidade de dados muito maior. No caso do Quantum Fireball Plus KA, a versão de 9.1 GB mantém taxas de transferência cerca de 7% maiores que a versão de 18.2 GB.

Veja que este não é o caso de todos os discos rígidos do mesmo modelo lançados com capacidades diferentes; um exemplo é o Medalist Pro da Seagate, a densidade na versão de 6.4 GB é de apenas 1.3 GB por face, com rotação de 5,400 RPM, enquanto na versão de 9.1 GB a densidade sobe para 2.3 GB por face e a rotação para 7,200 RPM.

O desempenho do disco rígido deve ser calculado com base nas especificações, e não com base na capacidade. Mesmo sem ter acesso a qualquer benchmark, apenas examinando a densidade, tempo de acesso, velocidade de rotação e cache, é possível ter uma boa idéia do desempenho apresentado pelo disco.
 
in Manual de Hardware Completo
de Carlos E Marimoto



Sem comentários: