Re: [nfsv4] Inter server-side copy performance

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

 



On Mon, Apr 17, 2017 at 11:37 AM, Anna Schumaker
<schumakeranna@xxxxxxxxx> wrote:
>
>
> On Mon, Apr 17, 2017 at 11:30 AM Olga Kornievskaia <aglo@xxxxxxxxx> wrote:
>>
>> On Mon, Apr 17, 2017 at 9:36 AM, J. Bruce Fields <bfields@xxxxxxxxxxxx>
>> wrote:
>> > On Fri, Apr 14, 2017 at 05:22:13PM -0400, Olga Kornievskaia wrote:
>> >> On Fri, Apr 14, 2017 at 4:09 PM, Mora, Jorge <Jorge.Mora@xxxxxxxxxx>
>> >> wrote:
>> >> > On 4/13/17, 11:45 AM, "J. Bruce Fields" <bfields@xxxxxxxxxxxx> wrote:
>> >> >> Are you timing just the copy_file_range() call, or do you include a
>> >> >> following sync?
>> >> >
>> >> > I am timing right before calling copy_file_range() up to doing an
>> >> > fsync() and close() of the destination file.
>> >> > For the traditional copy is the same, I am timing right before the
>> >> > first read on the source file up to the
>> >> > fsync() and close() of the destination file.
>> >>
>> >> Why should do we need a sync after copy_file_range(). kernel
>> >> copy_file_range() will send the commits for any unstable copies it
>> >> received.
>> >
>> > Why does it do that?  As far as I can tell it's not required by
>> > documentation for copy_file_range() or COPY.  COPY has a write verifier
>> > and a stable_how argument in the reply.  Skipping the commits would
>> > allow better performance in case a copy requires multiple COPY calls.
>> >
>> > But, in any case, if copy_file_range() already committed then it
>> > probably doesn't make a significant difference to the timing whether you
>> > include a following sync and/or close.
>>
>> Hm. It does make sense. Anna wrote the original code which included
>> the COMMIT after copy which I haven't thought about.
>>
>> Anna, any comments?
>
>
> I think the commit just seemed like a good idea at the time.  I'm okay with
> changing it if it doesn't make sense.

Given how the code is written now it looks like it's not possible to
save up commits....

Here's what I can see happening:

nfs42_proc_clone() as well as nfs42_proc_copy() will call
nfs_sync_inode(dst) "to make sure server(s) have the latest data"
prior to initiating the clone/copy. So even if we just queue up (not
send) the commit after the executing nfs42_proc_copy, then next call
into vfs_copy_file_range() will send out that queued up commit.

Is it ok to relax the requirement that requirement, I'm not sure...
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux