Назад | Перейти на главную страницу

iozone: 5 параллельных потоков, произвольное чтение 300K блоков делает больше операций / с, чем использование только одного потока, в чем может быть основная причина?

Раздел находится в RAID1 с использованием программного 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

Таким образом, для блоков размером 300К произвольное чтение с использованием одного потока составило 58 операций в секунду или около 17 МБ / с.

Но когда я попробовал 5 потоков, каждый из которых считал блоки по 300К, неожиданно для меня это сработало быстрее, хотя я ожидал большего произвольного доступа:

    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

Кто-нибудь знает, какие политики чтения / кеширования в ОС Linux или на жестких дисках делают 5 потоков, читающих случайные блоки 300 КБ быстрее, чем 1 поток, читающий случайные 300 КБ блоков?

Что тут удивительного?

1 поток означает команду, ожидание, чтение, цикл. Здесь есть элемент ожидания - задержка.

Множественные потоки устраняют это и - позволяют более оптимизировать диски благодаря организации очереди нескольких команд. То, что вы получаете больше IOPS с 3 потоками, совсем не удивительно.

Это raid1, поэтому записи идут на оба диска, но чтение может быть удовлетворено одним, поэтому с большим количеством потоков я бы ожидал лучшей производительности. Но это может быть лучше всего с потоками, равными количеству дисков в рейде 1 (или части рейда 1 в рейде 10).