Como tirar melhor proveito da performance do disco?

Lembro-me de um curso que tive sobre Storage, no qual o instrutor começava perguntando se alguém sabia o que era um disk drive. Ao mesmo tempo que a resposta parecia óbvia ("Lógico que sim!!!"), todos na classe sabiam que havia algo mais na pergunta. Ele deixou claro que queria começar do zero e logo mostrou algumas ilustrações de disco.

Primeiro, foram descritos os principais componentes de um disk drive:

  • Platter - São os discos magnéticos que armazenam os dados.
  • Head (Cabeçote) - Dispositivo responsável por realizar a leitura/gravação em disco.
  • Arm/Actuator (Atuador) - Corresponde a parte móvel que permite a movimentação da cabeça para posicionamento.
  • Spindle (Motor) - Esse é o motor que gira em velocidade constante.

image

Em cada platter, podemos imaginar vários círculos concêntricos com tamanhos variados. Cada círculo corresponde a um track e o conjunto de tracks (em um formato tridimensional), a um cilindro.

image

Finalmente, cada track é dividido em vários setores - na grande maioria dos discos, cada setor possui 512 bytes.

image

Vou tentar descrever o que acontece quando uma operação de leitura é realizada:

    1. A informação a ser lida é traduzida em uma coordenada no disco, seguindo o formato CHS (Cylinder/Head/Sector)
    2. O atuador posiciona o cabeçote no cilindro/track correspondente ao dado
    3. O motor gira até a posição correspondente do setor dentro do track
    4. A leitura é realizada através do cabeçote correspondente ao platter

Prestem bastante atenção aos pontos 2 e 3.

Quanto tempo que o atuador precisa para posicionar o cabeçote no cilindro correspondente?

Resposta: Seek Time.

Quanto tempo que o motor necessita para posicionar o cabeçote no setor correspondente?

Resposta: Rotation Latency Time.

Essas informações estão presentes na especificação do disco.

EXEMPLO:

Disco Seagate Savvio

http://www.seagate.com/www/en-us/products/servers/savvio/savvio_15k.2/

PERFORMANCE

 

Spindle Speed

15,000 rpm

Average latency

2.0 msec

Random read seek time

3.2 msec

Random write seek time

3.5 msec

No próximo post, continuaremos olhando esses números.