Compartilhar via


Especificação de Disco

No post anterior, comentei sobre a parte mecânica do disco. Agora vamos ler a especificação de um disco e entender de que forma podemos otimizar sua performance ao máximo.

Escolhi um disco Savvio 15K RPM 146GB.
https://www.seagate.com/www/en-us/products/servers/savvio/savvio_15k.2

A especificação do disco é semelhante ao quadro abaixo:

Capacity   
Formatted Capacity 146.8 GB
Interface 3-Gbit/s SAS
External Transfer Rate (Host to/from Buffer) 300 MB/s
Performance   
Spindle Speed 15K RPM
Average Latency (ms) 2.0 ms
Average Read/Write Seek Time 2.9/3.3 ms
Track-to-track Time 0.2 ms
Sustained Transfer Rate (Outer to Inner) 160 - 122MB/s
Internal Transfer Rate (Buffer to/from Disk) 160 MB/s (max)
Cache (Internal Buffer) 16 MB
Configuration   
Disks 2
Heads 4
Sector Size 512 bytes

A interface corresponde a forma de comunicação entre o disco e a controladora, sendo as mais comuns: ATA, SATA, SCSI, SAS e FC. No exemplo do disco Savvio, a interface usada é SAS com 3-GBit, que permite a transferência de 300 MB/s.

Em seguida, observamos a velocidade de rotação do disco (spindle speed). Em servidores, as velocidades mais comuns são 7200, 10000 e 15000 RPM - enquanto meu notebook roda a modestos 5400 RPM. A velocidade do motor influencia diretamente na performance do disco, portanto, vamos ficar de olho nele!

Os tempos de posicionamento:

  • Average Latency: Tempo necessário para posicionar o cabeçote no setor correspondente. Esse tempo depende exclusivamente da velocidade de rotação do motor (spindle)
  • Average Read/Write Seek Time: Tempo médio necessário para o atuador posicionar o cabeçote no track correspondente.
  • Track-to-track Time: Tempo necessário para o atuador movimentar-se para o track adjacente.

Seguindo os valores especificados para o disco, é necessário aproximadamente 3ms para posicionar o cabeçote no track e mais 2ms para posicionar no setor correto. Caso seja necessário deslizar o cabeçote para o track seguinte, então serão gastos mais 0,2ms. Essas operações de milissegundos são uma eternidade para o computador, por isso, o tempo de acesso corresponde normalmente ao gargalo.

Uma vez posicionado no setor correto, a leitura inicia-se com uma taxa de transferência entre 122-160 MB/s. Essa informação pode ser obtida através do Sustained Transfer Rate ou Internal Transfer Rate.

Todos os discos apresentam um cache interno denominado Buffer.

Por fim, temos a característica geométrica do disco: 2 platters, 4 heads e setores de 512 bytes.

Comparando alguns discos: 

  • Disco 1: Constellation 160GB
  • Disco 2: Savvio 10k RPM 73GB
  • Disco 3: Savvio 15k RPM 73GB
  • Disco 4: Savvio 15k RPM 146GB
Disco 1 2 3 4
Capacity        
Capacity (GB) 160 73 73 146
Interface SATA SAS SAS SAS
External Transfer Rate (MB/s) 300 300 300 300
Performance        
Spindle Speed (RPM) 7200 10k 15K 15K
Average Latency (ms) 4.16 3.0 2.0 2.0
Average Seek Time (ms) 8.5/9.5 3.8/4.4 2.9/3.3 2.9/3.3
Track-to-track Time (ms) 0.8 0.2 0.2 0.2
Transfer Rate (MB/s) N/A 89-55 160-122 160-122
Cache (MB) 32 16 16 16

Esse resultado mostra que a capacidade do disco não tem relação com performance. Devemos sempre olhar a velocidade de rotação do disco – 15000 RPM é o disco mais rápido. Outro ponto interessante é que a interface não influenciou na escolha do disco. Todas as interfaces permitem a transferência de 300 MB/s, muito superior ao Transfer Rate dos discos.

Comments

  • Anonymous
    July 26, 2011
    Fiz uma correção no artigo - havia um comentário falando que a quantidade de Cache não influencia em nada. De fato, o cache de disco deve apresentar pouca influência na performance do SQL Server - mas isso é um ponto discutível. Por isso, parece melhor retirar essa frase e eliminar problemas. Agradeço ao Eduardo Armelin pela sugestão.