Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: [tls-maxphys] src/sys/dev



On Tue, Oct 09, 2012 at 11:50:27PM +0200, Manuel Bouyer wrote:
> On Tue, Oct 09, 2012 at 11:13:52PM +0200, Manuel Bouyer wrote:
> > There is still a reference to MAXPHYS in ufs_bmaparray(), which, if I got
> > it right, will limit the *runp in VOP_BMAP(), which will limit iobytes
> > in genfs_do_io().
> > 
> > but that doens't explain why I see 32k xfers. And, to make things worse,
> > I see 64k if I start the big file read with debug enabled, so it looks
> > timing-dependant :(
> 
> OK, after fixing the issue I created in ra_startio(), and replacing the
> MAXPHYS above with mnt_maxphys, I get:
> device  read KB/t    r/s   time     MB/s write KB/t    w/s   time     MB/s
> wd0        504.22    129   0.90    63.45       0.00      0   0.90     0.00
> 
> with a 'cat big_file > /dev/null'
> writes are still limited to 64k ...

I would hope that cat'ing a file to /dev/null wouldn't result in any writes.  
:-)
I assume you meant 'cat big_file > other_file' ?

if so, then the reason for the 64k writes would be this block of code in 
ffs_write():

                if (!async && oldoff >> 16 != uio->uio_offset >> 16) {
                        mutex_enter(vp->v_interlock);
                        error = VOP_PUTPAGES(vp, (oldoff >> 16) << 16,
                            (uio->uio_offset >> 16) << 16,
                            PGO_CLEANIT | PGO_JOURNALLOCKED | PGO_LAZY);
                        if (error)
                                break;
                }


there's a similar block in many file systems at this point.  when I wrote that
I intended to replace it with something better before very long, but I just 
never
got back to it, alas.

-Chuck


Home | Main Index | Thread Index | Old Index