Diferença entre ler e escrever tempo de busca

4

Existe alguma diferença entre o tempo de busca para solicitação de leitura e gravação?

Eu tentei testar o tempo de busca medindo quanto tempo leva para duas solicitações, uma no início e outra perto do final do disco (portanto, elas devem estar nos cilindros diferentes). Para gravação, leva muito mais tempo para a sequência de solicitações terminar em comparação com a leitura. É por causa do tempo de busca para escrever é mais longo? Ou é por causa de outro fator, por ex. tempo de transferência?

Aqui, anexei uma gravação por latência de leitura para dimensionar os dados. Como pode ser visto no pequeno tamanho da requisição (qual tempo de transferência deve ser pequeno e o tempo de busca do disco irá afetar mais o tempo de io), a latência de gravação é quase 300x a latência de leitura.

Obrigado

    
por Algorithman 09.09.2015 / 16:17

2 respostas

1

A questão é um pouco ampla e pouco clara. Eu não estou familiarizado com essa ferramenta "fio" que você menciona, e uma rápida olhada na sua página da web não revelou detalhes sobre como funciona (ou seja, o que está medindo).

  • Como duDE disse, em princípio, o tempo de busca - o tempo necessário para mover a (s) cabeça (s) de E / S do cilindro onde eles estão para o cilindro onde você quer fazer uma operação de I / O - deve ser independente da operação que você quer fazer no cilindro alvo. Eu acredito que isso é comum para um driver de disco emitir dois comandos separados - procure e leia, ou procurar e depois escrever - então o disco nem sequer sabe seja uma busca por leitura ou uma busca por escrita.

Mas, como eu disse no meu primeiro parágrafo, não sei o que "fio" está medindo. Eu não sei como um programa pode medir o tempo real de busca sem ter sondas de kernel. Pode estar medindo o tempo para uma operação de E / S no nível da API.

  • Mesmo no nível do hardware, uma operação de gravação pode ser automaticamente seguida por uma leitura dos mesmos dados, para verificar a exatidão.
  • No nível do hardware, se você tiver armazenamento redundante (como o RAID), onde os mesmos dados são mantidos em dois ou mais drives independentes, Normalmente, a cabeça de E / S em uma unidade tenderá a permanecer em um cilindro de numeração baixa (por exemplo, 0,25 × MAXCYL), enquanto a cabeça de E / S na outra unidade tenderá a permanecer num cilindro de numeração elevada (por exemplo, 0,75 x MAXCYL). Uma operação de leitura vai para a unidade cuja cabeça está mais perto do cilindro alvo, então o máximo que precisará procurar será 0,25 × MAXCYL, enquanto a operação de gravação irá para ambas as unidades, então pode ser necessário buscar até 0,75 × MAXCYL.
  • No nível do sistema operacional / sistema de arquivos,

    • Uma leitura pode ou não atualizar o tempo de acesso de um arquivo. Alguns sistemas desativam isso completamente. Outros podem apenas definir uma bandeira (por exemplo, no inode residente na memória relevante, ou equivalente) que o arquivo foi lido; o inode residente no disco pode não ser atualizado até algum tempo depois (de forma assíncrona).
    • Uma gravação

      • provavelmente exigirá a atualização do horário de modificação do arquivo.
      • Se você estiver estendendo o arquivo (em vez de apenas sobrescrever os dados próximos do final),
        • exigirá que o tamanho do arquivo seja alterado (por exemplo, no inode) e
        • pode exigir alocação de bloco (s) da lista livre (ou equivalente),

      e provavelmente não será possível adiar essas atividades.

  • Se você estiver usando um arquivo antigo para o seu teste, e você desfragmentou o disco desde que o arquivo foi criado, mas você estendeu o arquivo desde então (mesmo que você não esteja estendendo o arquivo nesses testes), pode ser que o começo do arquivo esteja armazenado em uma região contígua, e o final do arquivo não é. Mas a única implicação que posso ver disso é que acessar a frente do arquivo pode ser mais rápido do que acessar o final. Não vejo como isso possa causar uma diferença entre ler e escrever.
por 12.09.2015 / 17:42
1

IMHO há apenas um tempo de busca :

Seek time is the time taken for a hard disk controller to locate a specific piece of stored data. Other delays include transfer time (data rate) and rotational delay (latency).

When anything is read or written to a disc drive, the read/write head of the disc needs to move to the right position. The actual physical positioning of the read/write head of the disc is called seeking. The amount of time that it takes the read/write head of the disc to to move from on part fo the disk to another is called the seek time.

    
por 09.09.2015 / 16:27

Tags