Hello Christoph, apologies, here is a clear summary of the issue.
During testing of the latest linux-next with rc-10 block layer changes I
noticed that I/O was being capped at 1MB size and no merging was seen.
The issue was not apparent on 4.8.0-rc8 or earlier.
dd if=/dev/sdw bs=4096k of=/dev/null iflag=direct
### RECORD 6 >>> ibclient <<< (1482266543.001) (Tue Dec 20 15:42:23 2016) ###
# DISK STATISTICS (/sec)
#
<---------reads---------------><---------writes--------------><--------averages-------->
Pct
#Time Name KBytes Merged IOs Size Wait KBytes Merged IOs Size
Wait RWSize QLen Wait SvcTim Util
15:42:23 sdw 278528 201 68 4096 2 0 0 0 0
0 4096 1 2 2 206
Then git checkout master and build final test kernel
4.9.0+
This one clearly shows the I.O at 1MB and no merging.
# DISK STATISTICS (/sec)
#
<---------reads---------------><---------writes--------------><--------averages-------->
Pct
#Time Name KBytes Merged IOs Size Wait KBytes Merged IOs Size
Wait RWSize QLen Wait SvcTim Util
22:12:48 sdw 1413120 0 1380 1024 2 0 0 0 0
0 1024 3 2 0 99
22:12:49 sdw 1409024 0 1376 1024 2 0 0 0 0
0 1024 3 2 0 98
22:12:50 sdw 1445888 0 1412 1024 2 0 0 0 0
0 1024 3 2 0 98
22:12:51 sdw 1429504 0 1396 1024 2 0 0 0 0
0 1024 3 2 0 98
22:12:52 sdw 1426432 0 1393 1024 2 0 0 0 0
0 1024 3 2 0 98
22:12:53 sdw 1408000 0 1375 1024 2 0 0 0 0
0 1024 3 2 0 98
*** ****
****
After multiple bisects (6000 revisions, 13 cycles), I got to this one.
Of course there are a huge amount of block layer changes as we know in rc10.
[loberman@ibclient linux-next.orig]$ git bisect bad
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[542ff7bf18c63cf403e36a4a1c71d86dc120d924] block: new direct I/O implementation
This commit is the one that seems to have changed the behavior.
Max I/O size restricted 1MB, even when 4MB I/O is requested, no merging seen.
This is not going to only affect SRP targets.
I will be happy to test any patches and the test bed is always in place.
commit 542ff7bf18c63cf403e36a4a1c71d86dc120d924
Author: Christoph Hellwig <[email protected]>
Date: Wed Nov 16 23:14:22 2016 -0700
block: new direct I/O implementation
Similar to the simple fast path, but we now need a dio structure to
track multiple-bio completions. It's basically a cut-down version
of the new iomap-based direct I/O code for filesystems, but without
all the logic to call into the filesystem for extent lookup or
allocation, and without the complex I/O completion workqueue handler
for AIO - instead we just use the FUA bit on the bios to ensure
data is flushed to stable storage.
Signed-off-by: Christoph Hellwig <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Many Thanks
Laurence
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html