2010-01-27 22:23:16

by Chuck Lever III

[permalink] [raw]
Subject: splice read byte accounting

Hi-

nfs_file_splice_write() accounts for the bytes in the request in the
"normal bytes written" counter, but nfs_file_splice_read() does not
account for bytes read.

Should the read path count these as normal bytes as well, or should
the write path not account for these bytes?

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com






2010-01-27 23:19:29

by Trond Myklebust

[permalink] [raw]
Subject: Re: splice read byte accounting

On Wed, 2010-01-27 at 17:22 -0500, Chuck Lever wrote:
> Hi-
>
> nfs_file_splice_write() accounts for the bytes in the request in the
> "normal bytes written" counter, but nfs_file_splice_read() does not
> account for bytes read.
>
> Should the read path count these as normal bytes as well, or should
> the write path not account for these bytes?
>

nfs_file_splice_read() should probably update NFSIOS_NORMALREADBYTES.

That said, why do nfs_file_read(), nfs_file_write() and
nfs_file_splice_write() update the stats with the requested number of
bytes, irrespective of the number of bytes that were actually
read/write?

Trond


2010-01-28 15:07:39

by Chuck Lever III

[permalink] [raw]
Subject: Re: splice read byte accounting

On Jan 27, 2010, at 6:19 PM, Trond Myklebust wrote:
> On Wed, 2010-01-27 at 17:22 -0500, Chuck Lever wrote:
>> Hi-
>>
>> nfs_file_splice_write() accounts for the bytes in the request in the
>> "normal bytes written" counter, but nfs_file_splice_read() does not
>> account for bytes read.
>>
>> Should the read path count these as normal bytes as well, or should
>> the write path not account for these bytes?
>>
>
> nfs_file_splice_read() should probably update NFSIOS_NORMALREADBYTES.
>
> That said, why do nfs_file_read(), nfs_file_write() and
> nfs_file_splice_write() update the stats with the requested number of
> bytes, irrespective of the number of bytes that were actually
> read/write?

We're counting the number of bytes requested by applications. I'm not
sure which is more useful here; number of bytes requested, or number
of bytes actually read/written. For computing ratios of app bytes v.
otw bytes, I suppose the latter?

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com





2010-01-28 15:15:38

by Trond Myklebust

[permalink] [raw]
Subject: Re: splice read byte accounting

On Thu, 2010-01-28 at 10:07 -0500, Chuck Lever wrote:
> On Jan 27, 2010, at 6:19 PM, Trond Myklebust wrote:
> > On Wed, 2010-01-27 at 17:22 -0500, Chuck Lever wrote:
> >> Hi-
> >>
> >> nfs_file_splice_write() accounts for the bytes in the request in the
> >> "normal bytes written" counter, but nfs_file_splice_read() does not
> >> account for bytes read.
> >>
> >> Should the read path count these as normal bytes as well, or should
> >> the write path not account for these bytes?
> >>
> >
> > nfs_file_splice_read() should probably update NFSIOS_NORMALREADBYTES.
> >
> > That said, why do nfs_file_read(), nfs_file_write() and
> > nfs_file_splice_write() update the stats with the requested number of
> > bytes, irrespective of the number of bytes that were actually
> > read/write?
>
> We're counting the number of bytes requested by applications. I'm not
> sure which is more useful here; number of bytes requested, or number
> of bytes actually read/written. For computing ratios of app bytes v.
> otw bytes, I suppose the latter?
>

Yes. Most apps will just be inputting the buffer size as the 'number of
bytes requested', which is not really a particularly useful number.



2010-01-28 15:17:00

by Suresh Jayaraman

[permalink] [raw]
Subject: Re: splice read byte accounting

On 01/28/2010 08:37 PM, Chuck Lever wrote:
> On Jan 27, 2010, at 6:19 PM, Trond Myklebust wrote:
>> On Wed, 2010-01-27 at 17:22 -0500, Chuck Lever wrote:
>>> Hi-
>>>
>>> nfs_file_splice_write() accounts for the bytes in the request in the
>>> "normal bytes written" counter, but nfs_file_splice_read() does not
>>> account for bytes read.
>>>
>>> Should the read path count these as normal bytes as well, or should
>>> the write path not account for these bytes?
>>>
>>
>> nfs_file_splice_read() should probably update NFSIOS_NORMALREADBYTES.

Yes, I think. Looks like a oversight while we added splice write
support. The argument then was the number of bytes written via splice
are effectively cached writes and hence makes sense to add it to
NFSIO_NORMALWRITTENBYTES.

>> That said, why do nfs_file_read(), nfs_file_write() and
>> nfs_file_splice_write() update the stats with the requested number of
>> bytes, irrespective of the number of bytes that were actually
>> read/write?
>
> We're counting the number of bytes requested by applications. I'm not
> sure which is more useful here; number of bytes requested, or number of
> bytes actually read/written. For computing ratios of app bytes v. otw
> bytes, I suppose the latter?
>

I think the number of bytes actually read/written would be more useful.

Thanks,

--
Suresh Jayaraman

2010-01-28 16:07:47

by Chuck Lever III

[permalink] [raw]
Subject: Re: splice read byte accounting


On Jan 28, 2010, at 10:15 AM, Trond Myklebust wrote:

> On Thu, 2010-01-28 at 10:07 -0500, Chuck Lever wrote:
>> On Jan 27, 2010, at 6:19 PM, Trond Myklebust wrote:
>>> On Wed, 2010-01-27 at 17:22 -0500, Chuck Lever wrote:
>>>> Hi-
>>>>
>>>> nfs_file_splice_write() accounts for the bytes in the request in
>>>> the
>>>> "normal bytes written" counter, but nfs_file_splice_read() does not
>>>> account for bytes read.
>>>>
>>>> Should the read path count these as normal bytes as well, or should
>>>> the write path not account for these bytes?
>>>>
>>>
>>> nfs_file_splice_read() should probably update
>>> NFSIOS_NORMALREADBYTES.
>>>
>>> That said, why do nfs_file_read(), nfs_file_write() and
>>> nfs_file_splice_write() update the stats with the requested number
>>> of
>>> bytes, irrespective of the number of bytes that were actually
>>> read/write?
>>
>> We're counting the number of bytes requested by applications. I'm
>> not
>> sure which is more useful here; number of bytes requested, or number
>> of bytes actually read/written. For computing ratios of app bytes v.
>> otw bytes, I suppose the latter?
>>
>
> Yes. Most apps will just be inputting the buffer size as the 'number
> of
> bytes requested', which is not really a particularly useful number.

I've got another patch in this area (which motivated the original
question). I'll code something up and send it your way.

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com