Strange IO performance with UFS

Roger Pau Monné roger.pau at citrix.com
Fri Jul 4 12:22:17 UTC 2014


Adding freebsd-fs, sorry for the double posting to -hackers.

On 04/07/14 13:37, Roger Pau Monné wrote:
> Hello,
> 
> I'm doing some tests on IO performance using fio, and I've found
> something weird when using UFS and large files. I have the following
> very simple sequential fio workload:
> 
> [global]
> rw=write
> size=10g
> bs=4k
> 
> [job1]
> 
> In this case the box has 6GB of RAM, and when running the following fio
> workload, I also run `iostat -xz -w 1` in parallel. The result of fio is
> pretty disappointing in terms of performance:
> 
> bw=33309KB/s, iops=8327
> 
> The output of iostat is the following:
> 
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     266.1 299.0 34000.8 38243.4    1  92.4 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     236.7 235.7 30295.1 30168.9   30  61.0 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     301.8 224.7 38272.7 28674.4   80  49.3  95
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     185.1 274.8 23687.5 35168.7   15  92.4 105
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     258.4 238.1 33077.3 30475.7   36  57.1 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     200.3 213.4 25634.5 27319.4    8  72.7 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     243.3 233.7 31053.3 29919.1   31  57.4 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0     243.5 228.5 31169.7 29244.1   49  73.2  99
> 
> So, we are performing almost the same amount of reads and writes to
> disk, even when the workload is just a sequential write, this doesn't
> seem right to me, I was expecting that the number of reads would be much
> lower.
> 
> I've also added the following DTrace probe, in order to figure out where
> those reads are coming from, and the stack trace of all these read bios
> is always the same:
> 
>               kernel`g_io_request+0x384
>               kernel`g_part_start+0x2c3
>               kernel`g_io_request+0x384
>               kernel`g_part_start+0x2c3
>               kernel`g_io_request+0x384
>               kernel`ufs_strategy+0x8a
>               kernel`VOP_STRATEGY_APV+0xf5
>               kernel`bufstrategy+0x46
>               kernel`cluster_read+0x5e6
>               kernel`ffs_balloc_ufs2+0x1be2
>               kernel`ffs_write+0x310
>               kernel`VOP_WRITE_APV+0x166
>               kernel`vn_write+0x2eb
>               kernel`vn_io_fault_doio+0x22
>               kernel`vn_io_fault1+0x78
>               kernel`vn_io_fault+0x173
>               kernel`dofilewrite+0x85
>               kernel`kern_writev+0x65
>               kernel`sys_write+0x63
> 
> The probe used is the following:
> 
> io:::start
> /args[0] && (args[0]->bio_cmd == BIO_READ)/
> {
>         @traces[stack()] = count();
> }
> 
> If I lower the file size of the fio workload to 4GB for example
> everything seems fine, and I see almost no reads in iostat:
> 
> bw=84953KB/s, iops=21238
> 
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0       0.0 694.6     0.0 88912.2   82 111.4 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0       4.0 559.4   159.3 71014.2   67  99.6  99
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0       1.9 630.8   124.8 80617.0   63  90.6 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0       0.0 673.3     0.0 86177.9   80 107.2  99
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0       7.0 564.5   381.7 72260.6    4  94.1 101
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0       2.9 641.8    92.2 82113.9   55 101.3 100
>                         extended device statistics
> device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
> ada0       1.9 638.9   151.2 81773.4   54  90.4 100
> 
> Is this something expected/known? I'm I doing something wrong on the tests?
> 
> Thanks, Roger.
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
> 



More information about the freebsd-fs mailing list