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.