Re: [PATCH] mm: Move readahead limit outside of readahead, and advisory syscalls

From: Kyle Walker
Date: Tue Jul 26 2016 - 15:23:50 EST


On Mon, Jul 25, 2016 at 4:47 PM, Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> Can this suffering be quantified please?
>

The observed suffering is primarily visible within an IBM Qradar
installation. From a high level, the lower limit to the amount of advisory
readahead pages results in a 3-5x increase in time necessary to complete
an identical query within the application.

Note, all of the below values are with Readahead configured to 64Kib.

Baseline behaviour - Prior to:
600e19af ("mm: use only per-device readahead limit")
6d2be915 ("mm/readahead.c: fix readahead failure for memoryless NUMA
nodes and limit readahead pages")

Result:
Qradar - Command: "username equals root" - 57.3s to complete search


New performance - With:
600e19af ("mm: use only per-device readahead limit")
6d2be915 ("mm/readahead.c: fix readahead failure for memoryless NUMA
nodes and limit readahead pages")

Result:
Qradar - "username equals root" query - 245.7s to complete search


Proposed behaviour - With the proposed patch in place.

Result:
Qradar - "username equals root" query - 57s to complete search


In narrowing the source of the performance deficit, it was observed that
the amount of data loaded into pagecache via madvise was quite a bit lower
following the noted commits. As simply reverting those lower limits were
not accepted previously, the proposed alternative strategy seemed like the
most beneficial path forwards.

>
> Linus probably has opinions ;)
>

I understand that changes to readahead that are very similar have been
proposed quite a bit lately. If there are any changes or testing needed,
I'm more than happy to tackle that.


Thank you in advance!
--
Kyle Walker