On 4/30/21 8:35 AM, Al Viro wrote: > On Fri, Apr 30, 2021 at 01:57:22PM +0100, Pavel Begunkov wrote: >> On 4/28/21 7:16 AM, yangerkun wrote: >>> Hi, >>> >>> Should we pick this patch for 5.13? >> >> Looks ok to me > > Looks sane. BTW, Pavel, could you go over #untested.iov_iter > and give it some beating? Ideally - with per-commit profiling to see > what speedups/slowdowns do they come with... > > It's not in the final state (if nothing else, it needs to be > rebased on top of xarray stuff, and there will be followup cleanups > as well), but I'd appreciate testing and profiling data... > > It does survive xfstests + LTP syscall tests, but that's about > it. Al, I ran your v3 branch of that and I didn't see anything in terms of speedups. The test case is something that just writes to eventfd a ton of times, enough to get a picture of the overall runtime. First I ran with the existing baseline, which is eventfd using ->write(): Executed in 436.58 millis fish external usr time 106.21 millis 121.00 micros 106.09 millis sys time 331.32 millis 33.00 micros 331.29 millis Executed in 436.84 millis fish external usr time 113.38 millis 0.00 micros 113.38 millis sys time 324.32 millis 226.00 micros 324.10 millis Then I ran it with the eventfd ->write_iter() patch I posted: Executed in 484.54 millis fish external usr time 93.19 millis 119.00 micros 93.07 millis sys time 391.35 millis 46.00 micros 391.30 millis Executed in 485.45 millis fish external usr time 96.05 millis 0.00 micros 96.05 millis sys time 389.42 millis 216.00 micros 389.20 millis 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. -- Jens Axboe