Thread (18 messages) 18 messages, 5 authors, 2021-05-07

Re: [PATCH] block: reexpand iov_iter after read/write

From: Jens Axboe <axboe@kernel.dk>
Date: 2021-05-06 19:15:06
Also in: io-uring, linux-fsdevel

On 5/6/21 12:55 PM, Al Viro wrote:
On Thu, May 06, 2021 at 11:19:03AM -0600, Jens Axboe wrote:
quoted
Doing a quick profile, on the latter run with ->write_iter() we're
spending 8% of the time in _copy_from_iter(), and 4% in
new_sync_write(). That's obviously not there at all for the first case.
Both have about 4% in eventfd_write(). Non-iter case spends 1% in
copy_from_user().

Finally with your branch pulled in as well, iow using ->write_iter() for
eventfd and your iov changes:

Executed in  485.26 millis    fish           external
   usr time  103.09 millis   70.00 micros  103.03 millis
   sys time  382.18 millis   83.00 micros  382.09 millis

Executed in  485.16 millis    fish           external
   usr time  104.07 millis   69.00 micros  104.00 millis
   sys time  381.09 millis   94.00 micros  381.00 millis

and there's no real difference there. We're spending less time in
_copy_from_iter() (8% -> 6%) and less time in new_sync_write(), but
doesn't seem to manifest itself in reduced runtime.
Interesting... do you have instruction-level profiles for _copy_from_iter()
and new_sync_write() on the last of those trees?
Attached output of perf annotate <func> for that last run.

-- 
Jens Axboe

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help