Messages in this thread | | | Subject | Re: [RFC] mm: optimise generic_file_read_iter | From | Jens Axboe <> | Date | Fri, 6 Aug 2021 11:18:28 -0600 |
| |
On 8/6/21 7:48 AM, Al Viro wrote: > On Fri, Aug 06, 2021 at 12:42:43PM +0100, Pavel Begunkov wrote: >> Unless direct I/O path of generic_file_read_iter() ended up with an >> error or a short read, it doesn't use inode. So, load inode and size >> later, only when they're needed. This cuts two memory reads and also >> imrpoves code generation, e.g. loads from stack. > > ... and the same question here. > >> NOTE: as a side effect, it reads inode->i_size after ->direct_IO(), and >> I'm not sure whether that's valid, so would be great to get feedback >> from someone who knows better. > > Ought to be safe, I think, but again, how much effect have you observed > from the patch?
Ran a quick test here, doing polled IO (~3.3M IOPS) and we reduce the overhead of generic_file_read_iter() from 1.5% of the runtime to 1.2%. Noticeable. Will improve once we stop digging into the inode on the io_uring side.
Anyway, just one data point, perhaps Pavel has some too.
-- Jens Axboe
| |