iozone: 5 threads simultâneas leitura aleatória de 300K blocos faz mais ops / s do que usando apenas um thread, qual poderia ser o motivo subjacente?

5

A partição está no RAID1 usando o software RAID.

    Command line used: iozone -s 190g -r 300k -O -b test_file
    OPS Mode. Output is in operations per second.
                                                            random  random    bkwd   record   stride                                   
          KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
   199229440     300     240     234      254      253      58     127     100     6539       91      234      234     254      254

Assim, para 300K blocos, a leitura aleatória usando um thread foi de 58 ops / segundo de cerca de 17MB / s.

Mas quando eu tentei 5 threads cada leitura 300K blocos, inesperadamente para mim, funcionou mais rápido, embora eu espere mais acesso aleatório:

    OPS Mode. Output is in operations per second.
    Command line used: iozone -s 80g -r 300k -O -l5 -u 5 -F test_file1 test_file2 test_file3 test_file4 test_file5

    Children see throughput for 5 random readers    =      69.27 ops/sec
    Parent sees throughput for 5 random readers     =      69.27 ops/sec
    Min throughput per process                      =      13.81 ops/sec 
    Max throughput per process                      =      13.89 ops/sec
    Avg throughput per process                      =      13.85 ops/sec

Alguém sabe quais políticas de leitura / armazenamento em cache no sistema operacional Linux ou em discos rígidos fazem com que 5 segmentos leiam 300K blocos aleatórios mais rápido que 1 thread lendo blocos aleatórios de 300K?

    
por Mladen Adamovic 13.04.2014 / 15:54

2 respostas

2

O que é surpreendente?

1 thread significa comando, espera, leitura, loop. Há um elemento de espera na latência.

Vários threads eliminam isso e permitem que os discos sejam mais otimizados graças ao enfileiramento de vários comandos. Que você obtenha mais IOPS com 3 threads não é surpreendente em tudo.

    
por 13.04.2014 / 21:59
0

É um raid1, portanto, as gravações vão para os dois discos, mas as leituras podem ser satisfeitas com um, portanto, com mais threads, esperamos um melhor desempenho. Mas pode ser melhor com encadeamentos iguais ao número de discos na raid 1 (ou a parte da raid 1 de uma raid 10).

    
por 11.11.2014 / 08:22