On Thu, 10 Oct 2019 15:17:47 -0400 Johannes Weiner <hannes@xxxxxxxxxxx> wrote: > On Thu, Oct 10, 2019 at 08:21:34AM -0700, Minchan Kim wrote: > > From: Minchan Kim <minchan@xxxxxxxxxx> > > > > If block device supports rw_page operation, it doesn't submit bio > > so annotation in submit_bio for refault stall doesn't work. > > It happens with zram in android, especially swap read path which > > could consume CPU cycle for decompress. It is also a problem for > > zswap which uses frontswap. > > > > Annotate swap_readpage() to account the synchronous IO overhead > > to prevent underreport memory pressure. > > > > Cc: Johannes Weiner <hannes@xxxxxxxxxxx> > > Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> > > Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx> > > Can you please add a comment to the caller? Lifted from submit_bio(): > > /* > * Count submission time as memory stall. When the device is > * congested, or the submitting cgroup IO-throttled, > * submission can be a significant part of overall IO time. > */ This? --- a/mm/page_io.c~mm-annotate-refault-stalls-from-swap_readpage-fix +++ a/mm/page_io.c @@ -361,6 +361,11 @@ int swap_readpage(struct page *page, boo VM_BUG_ON_PAGE(!PageLocked(page), page); VM_BUG_ON_PAGE(PageUptodate(page), page); + /* + * Count submission time as memory stall. When the device is congested, + * or the submitting cgroup IO-throttled, submission can be a + * significant part of overall IO time. + */ psi_memstall_enter(&pflags); if (frontswap_load(page) == 0) { _