Cálculo do tempo de leitura do modelo de bloco de disco rígido

8

Meu professor publicou um slide sobre como calcular a recuperação de dados do disco rígido usando o modelo de bloco. As especificações foram:

  • 7200 RPM
  • 5ms PROCURAR
  • 80MB / s TAXA DE TRANSFERÊNCIA
  • MODELO DE BLOCO: Tamanho do bloco 4KB

Não entendo como ele fez o cálculo a seguir ou de onde vieram alguns números:

5ms + 1000/240 ms + 0,05ms = 9,216ms para ler o bloco.

Alguém pode me dizer de onde vêm 1000/240 ms e 0,05ms?

Edição: Se os números estavam completamente errados, como você faria isso então?

tambor
fonte
Existem três componentes. O tempo de busca, o tempo para os dados girarem sob a cabeça de leitura (ele considera a metade do tempo de rotação completo como a média) e o tempo de transferência.
David Marshall
Na verdade, existe um quarto componente, o "tempo de transferência" ocorre em duas operações distintas e sem sobreposição. Primeiro, há a leitura do prato para o buffer do setor. Depois, há outra transferência do buffer do setor para o host pela interface do drive (por exemplo, SATA). Há um equívoco generalizado de que essas duas transferências podem ocorrer simultaneamente; eles não podem. Os dados do setor precisam ser validados após serem lidos e antes de serem enviados ao host. @Hennes menciona isso como parte de itens ignorados.
serragem
Lembre-se de que os pontos mais delicados do tempo de busca são mal compreendidos por quase todos. O tempo de busca não é uma função linear, mas uma curva baseada no número de cilindros. A busca (usando um atuador de bobina de voz) consiste em uma fase de aceleração e uma desaceleração e, quando a busca é longa o suficiente, uma fase de velocidade máxima entre elas. Um tempo médio de busca deve ser ponderado para contabilizar apenas duas possíveis buscas de curso completo, mas 2 * (NCYL-1) buscas de faixa única, 2 * (NCYL-2) buscas de duas faixas ... e NCYL "procura" de tempo zero quando nenhum deslocamento da cabeça é necessário.
serragem

Respostas:

11

O disco em questão possui uma taxa de transferência de 80 MiB / s, ou 81920 kiB / s, ou 20480 blocos / s. Aqui, arredondaremos para 20.000 blocos / segundo, pois esse parece ser o que seu professor fez. Isso equivale a 0,05 ms para transferir um bloco, explicando o último termo na equação.

Finalmente, além de buscar tempo (tempo para mover o cabeçote da unidade para a pista), há também a latência rotacional do próprio disco para lidar. Em 7200 RPM, no pior dos casos, temos que esperar uma revolução completa, mas, em média, temos que esperar uma meia revolução - ou 4.166ms (7200 RPM = 120 rev / s = 8.333ms / rev).

Assim, para transferir um bloco para o computador, devemos esperar o equivalente Seek Time+ Rotational Latency+ Transfer Time:

5 ms + 4.166 ms + 0.05 ms = 9.216 ms

Observe que, para as unidades de estado sólido, embora não haja latência de rotação a ser levada em consideração, certamente ainda há um tempo de busca mensurável (para realmente abordar o conteúdo dos setores na memória flash) e o tempo de transferência (amplamente limitado pelo barramento sendo usado para transferir os dados em si, por exemplo, SATA).

Portanto, em geral, o tempo total de acesso para ler um único setor de uma unidade é (negligenciando o software):

Rotational/Hard Drive:  Seek Time + Rotational Latency + Transfer Time

Solid-State Drive:      Seek Time + Transfer Time
Avanço
fonte
5

O tempo de busca de 5 ms é o tempo para o disco rígido mover sua cabeça para o caminho certo (e selecionar a cabeça certa, algo que também leva tempo, mas que seu professor ignorou).


Uma vez que o cabeçote está no caminho certo, ele precisa aguardar o setor certo passar por baixo do cabeçote R / W. Nos é dado que é uma unidade de 7200 RPM. Que significa:

  • Na pior das hipóteses, os dados passaram e precisam esperar uma rotação completa.
  • Na melhor das hipóteses, o setor de dados acaba de chegar. Tudo está feliz.
  • No caso médio , o inversor precisa esperar meia rotação.

Para obter tempo para uma rotação completa da unidade em uma unidade de 7200 RPM:

  • 7200 rotações por minuto (também conhecido como 7200 RPM)
  • Ou 7200/60 vezes por segundo.
  • Ou 120 vezes por segundo.
  • Ou uma única rotação leva 1 / 120 ° de um segundo.
  • Qual é 8.3 ms

Então, metade de uma rotação deve levará metade do tempo, 1 / 240 th de um segundo.

1 segundo é 1000 ms

Este é o seu 1000 / 240 ms.


Tudo isso é o tempo até a unidade começar a ler os dados. Ainda será necessário lê-lo e transmiti-lo ao host.

Ler a partir da unidade é geralmente muito mais rápido do que passá-la, por isso vou focar na parte mais lenta:

Dado são:

1) TAXA DE TRANSFERÊNCIA DE 80 MB / s
2) MODELO DE BLOCO: Tamanho do bloco 4KB

  • 80 MiB em um segundo, ou 80 * 1024 KiB por um segundo, ou 4 * 20 * 1024 KiB / segundo.
  • Divida por 20480.
  • 4 KB por 1 / 20480 th de um segundo.
  • Ou 0,488281 ms, que é o último 0,05 ms .


Observe que esta resposta ignora que:

  1. a unidade precisa ler os dados antes de poder transmiti-los, isso o tornará um pouco mais lento.
  2. Mas não há informações sobre a rapidez com que os dados são lidos no prato. (que é uma questão de velocidade de rotação, comprimento dos dados a serem lidos, comprimento dos dados da soma de verificação e intervalos entre setores. (4KiB pode ser 8 leituras de "Cabeçalho | dados | soma de verificação | intervalo") ou uma única leitura.
  3. Ele também ignora que os dados já possam estar presentes no cache das unidades.
  4. E supõe que o cálculo da soma de verificação não demore muito tempo.
Hennes
fonte
Esta é provavelmente a primeira vez que vi uma menção correta do tempo de transferência de disco que faz uma distinção entre leitura de prato e transferência (interface). A "soma de verificação" é realmente um código de correção de erros (ECC), que pode detectar e corrigir um erro de rajada curta.
serragem 15/05