Детский и родительский вывод в iozone
Я не понимаю, что выдает эталонный тест iozone. Здесь я запускаю базовое чтение с 16 процессами, каждый из которых одновременно читает файлы размером 2048 КиБ. Я агрессивно отключил кеширование с помощью
echo 3 > /proc/sys/vm/drop_caches
.
Результаты следующие:
Run began: Thu Apr 21 22:12:42 2022
File size set to 2048 kB
Record Size 2048 kB
Include close in write timing
Include fsync in write timing
Command line used: iozone -t 16 -s 2048 -r 2048 -ce -i 1
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
Throughput test with 16 processes
Each process writes a 2048 kByte file in 2048 kByte records
Children see throughput for 16 readers = 1057899.00 kB/sec
Parent sees throughput for 16 readers = 559102.01 kB/sec
Min throughput per process = 0.00 kB/sec
Max throughput per process = 1057899.00 kB/sec
Avg throughput per process = 66118.69 kB/sec
Min xfer = 0.00 kB
Children see throughput for 16 re-readers = 948555.56 kB/sec
Parent sees throughput for 16 re-readers = 584476.30 kB/sec
Min throughput per process = 0.00 kB/sec
Max throughput per process = 948555.56 kB/sec
Avg throughput per process = 59284.72 kB/sec
Min xfer = 0.00 kB
Я не понимаю, почему пропускная способность «детей» так сильно отличается от пропускной способности «родителей» и почему кажется, что использовался только один процесс (
Min throughput per process
составляет 0,0 кБ/с и
Avg throughput per process
является
Children see throughput for 16 readers
/ 16).
Этот вопрос SO примерно такой же, но единственный ответ немного расплывчатый.