Re: [RFC PATCH V5] mm readahead: Fix readahead fail for no localmemory and limit readahead pages

From: Raghavendra K T
Date: Mon Feb 10 2014 - 03:15:42 EST


On 02/08/2014 02:11 AM, David Rientjes wrote:
On Fri, 7 Feb 2014, Raghavendra K T wrote:
3) Change the "readahead into remote memory" part of the documentation
which is misleading.

( I feel no need to add numa_mem_id() since we would specifically limit
the readahead with MAX_REMOTE_READAHEAD in memoryless cpu cases).


I don't understand what you're saying, numa_mem_id() is local memory to
current's cpu. When a node consists only of cpus and not memory it is not
true that all memory is then considered remote, you won't find that in any
specification that defines memory affinity including the ACPI spec. I can
trivially define all cpus on my system to be on memoryless nodes and
having that affect readahead behavior when, in fact, there is affinity
would be ridiculous.

As you rightly pointed , I 'll drop remote memory term and use
something like :

"* Ensure readahead success on a memoryless node cpu. But we limit
* the readahead to 4k pages to avoid trashing page cache." ..

Regarding ACCESS_ONCE, since we will have to add
inside the function and still there is nothing that could prevent us
getting run on different cpu with a different node (as Andrew ponted), I have not included in current patch that I am posting.
Moreover this case is hopefully not fatal since it is just a hint for readahead we can do.

So there are many possible implementation:
(1) use numa_mem_id(), apply freepage limit and use 4k page limit for all case
(Jan had reservation about this case)

(2)for normal case: use free memory calculation and do not apply 4k
limit (no change).
for memoryless cpu case: use numa_mem_id for more accurate
calculation of limit and also apply 4k limit.

(3) for normal case: use free memory calculation and do not apply 4k
limit (no change).
for memoryless case: apply 4k page limit

(4) use numa_mem_id() and apply only free page limit..

So, I ll be resending the patch with changelog and comment changes
based on your and Andrew's feedback (type (3) implementation).




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/