From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
To: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Fengguang Wu <fengguang.wu@intel.com>,
David Cohen <david.a.cohen@linux.intel.com>,
Al Viro <viro@zeniv.linux.org.uk>,
Damien Ramonda <damien.ramonda@intel.com>,
Jan Kara <jack@suse.cz>,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH V5] mm readahead: Fix readahead fail for no local memory and limit readahead pages
Date: Thu, 13 Feb 2014 12:37:22 +0530 [thread overview]
Message-ID: <52FC6F2A.30905@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1402101333160.15624@chino.kir.corp.google.com>
On 02/11/2014 03:05 AM, David Rientjes wrote:
> On Mon, 10 Feb 2014, Raghavendra K T wrote:
>
>> So I understood that you are suggesting implementations like below
>>
>> 1) I do not have problem with the below approach, I could post this in
>> next version.
>> ( But this did not include 4k limit Linus mentioned to apply)
>>
>> unsigned long max_sane_readahead(unsigned long nr)
>> {
>> unsigned long local_free_page;
>> int nid;
>>
>> nid = numa_mem_id();
>>
>> /*
>> * We sanitize readahead size depending on free memory in
>> * the local node.
>> */
>> local_free_page = node_page_state(nid, NR_INACTIVE_FILE)
>> + node_page_state(nid, NR_FREE_PAGES);
>> return min(nr, local_free_page / 2);
>> }
>>
>> 2) I did not go for below because Honza (Jan Kara) had some
>> concerns for 4k limit for normal case, and since I am not
>> the expert, I was waiting for opinions.
>>
>> unsigned long max_sane_readahead(unsigned long nr)
>> {
>> unsigned long local_free_page, sane_nr;
>> int nid;
>>
>> nid = numa_mem_id();
>> /* limit the max readahead to 4k pages */
>> sane_nr = min(nr, MAX_REMOTE_READAHEAD);
>>
>> /*
>> * We sanitize readahead size depending on free memory in
>> * the local node.
>> */
>> local_free_page = node_page_state(nid, NR_INACTIVE_FILE)
>> + node_page_state(nid, NR_FREE_PAGES);
>> return min(sane_nr, local_free_page / 2);
>> }
>>
>
> I have no opinion on the 4KB pages, either of the above is just fine.
>
I was able to test (1) implementation on the system where readahead
problem occurred. Unfortunately it did not help.
Reason seem to be that CONFIG_HAVE_MEMORYLESS_NODES dependency of
numa_mem_id(). The PPC machine I am facing problem has topology like
this:
numactl -H
---------
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 12 13 14 15 16 17 18 19 20 21 22 23 24 25
...
node 0 size: 0 MB
node 0 free: 0 MB
node 1 cpus: 8 9 10 11 32 33 34 35 ...
node 1 size: 8071 MB
node 1 free: 2479 MB
node distances:
node 0 1
0: 10 20
1: 20 10
So it seems numa_mem_id() does not help for all the configs..
Am I missing something ?
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
To: David Rientjes <rientjes@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Fengguang Wu <fengguang.wu@intel.com>,
David Cohen <david.a.cohen@linux.intel.com>,
Al Viro <viro@zeniv.linux.org.uk>,
Damien Ramonda <damien.ramonda@intel.com>,
Jan Kara <jack@suse.cz>,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH V5] mm readahead: Fix readahead fail for no local memory and limit readahead pages
Date: Thu, 13 Feb 2014 12:37:22 +0530 [thread overview]
Message-ID: <52FC6F2A.30905@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1402101333160.15624@chino.kir.corp.google.com>
On 02/11/2014 03:05 AM, David Rientjes wrote:
> On Mon, 10 Feb 2014, Raghavendra K T wrote:
>
>> So I understood that you are suggesting implementations like below
>>
>> 1) I do not have problem with the below approach, I could post this in
>> next version.
>> ( But this did not include 4k limit Linus mentioned to apply)
>>
>> unsigned long max_sane_readahead(unsigned long nr)
>> {
>> unsigned long local_free_page;
>> int nid;
>>
>> nid = numa_mem_id();
>>
>> /*
>> * We sanitize readahead size depending on free memory in
>> * the local node.
>> */
>> local_free_page = node_page_state(nid, NR_INACTIVE_FILE)
>> + node_page_state(nid, NR_FREE_PAGES);
>> return min(nr, local_free_page / 2);
>> }
>>
>> 2) I did not go for below because Honza (Jan Kara) had some
>> concerns for 4k limit for normal case, and since I am not
>> the expert, I was waiting for opinions.
>>
>> unsigned long max_sane_readahead(unsigned long nr)
>> {
>> unsigned long local_free_page, sane_nr;
>> int nid;
>>
>> nid = numa_mem_id();
>> /* limit the max readahead to 4k pages */
>> sane_nr = min(nr, MAX_REMOTE_READAHEAD);
>>
>> /*
>> * We sanitize readahead size depending on free memory in
>> * the local node.
>> */
>> local_free_page = node_page_state(nid, NR_INACTIVE_FILE)
>> + node_page_state(nid, NR_FREE_PAGES);
>> return min(sane_nr, local_free_page / 2);
>> }
>>
>
> I have no opinion on the 4KB pages, either of the above is just fine.
>
I was able to test (1) implementation on the system where readahead
problem occurred. Unfortunately it did not help.
Reason seem to be that CONFIG_HAVE_MEMORYLESS_NODES dependency of
numa_mem_id(). The PPC machine I am facing problem has topology like
this:
numactl -H
---------
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 12 13 14 15 16 17 18 19 20 21 22 23 24 25
...
node 0 size: 0 MB
node 0 free: 0 MB
node 1 cpus: 8 9 10 11 32 33 34 35 ...
node 1 size: 8071 MB
node 1 free: 2479 MB
node distances:
node 0 1
0: 10 20
1: 20 10
So it seems numa_mem_id() does not help for all the configs..
Am I missing something ?
next prev parent reply other threads:[~2014-02-13 7:01 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-22 10:53 [RFC PATCH V5] mm readahead: Fix readahead fail for no local memory and limit readahead pages Raghavendra K T
2014-01-22 10:53 ` Raghavendra K T
2014-02-03 8:30 ` Raghavendra K T
2014-02-03 8:30 ` Raghavendra K T
2014-02-06 22:51 ` Andrew Morton
2014-02-06 22:51 ` Andrew Morton
2014-02-06 22:58 ` David Rientjes
2014-02-06 22:58 ` David Rientjes
2014-02-06 23:22 ` Andrew Morton
2014-02-06 23:22 ` Andrew Morton
2014-02-06 23:48 ` David Rientjes
2014-02-06 23:48 ` David Rientjes
2014-02-06 23:58 ` David Rientjes
2014-02-06 23:58 ` David Rientjes
2014-02-07 10:42 ` Raghavendra K T
2014-02-07 10:42 ` Raghavendra K T
2014-02-07 20:41 ` David Rientjes
2014-02-07 20:41 ` David Rientjes
2014-02-10 8:21 ` Raghavendra K T
2014-02-10 8:21 ` Raghavendra K T
2014-02-10 10:05 ` David Rientjes
2014-02-10 10:05 ` David Rientjes
2014-02-10 12:25 ` Raghavendra K T
2014-02-10 12:25 ` Raghavendra K T
2014-02-10 21:35 ` David Rientjes
2014-02-10 21:35 ` David Rientjes
2014-02-13 7:07 ` Raghavendra K T [this message]
2014-02-13 7:07 ` Raghavendra K T
2014-02-13 8:05 ` David Rientjes
2014-02-13 8:05 ` David Rientjes
2014-02-13 10:04 ` Raghavendra K T
2014-02-13 10:04 ` Raghavendra K T
2014-02-13 22:41 ` David Rientjes
2014-02-13 22:41 ` David Rientjes
2014-02-14 0:14 ` Nishanth Aravamudan
2014-02-14 0:14 ` Nishanth Aravamudan
2014-02-14 0:37 ` Linus Torvalds
2014-02-14 0:37 ` Linus Torvalds
2014-02-14 0:45 ` Andrew Morton
2014-02-14 0:45 ` Andrew Morton
2014-02-14 4:32 ` Nishanth Aravamudan
2014-02-14 4:32 ` Nishanth Aravamudan
2014-02-14 10:54 ` David Rientjes
2014-02-14 10:54 ` David Rientjes
2014-02-17 19:28 ` Nishanth Aravamudan
2014-02-17 19:28 ` Nishanth Aravamudan
2014-02-17 23:14 ` David Rientjes
2014-02-17 23:14 ` David Rientjes
2014-02-18 1:31 ` Nishanth Aravamudan
2014-02-18 1:31 ` Nishanth Aravamudan
2014-02-17 22:59 ` Linus Torvalds
2014-02-17 22:59 ` Linus Torvalds
2014-02-14 7:43 ` Jan Kara
2014-02-14 7:43 ` Jan Kara
2014-02-17 22:57 ` Linus Torvalds
2014-02-17 22:57 ` Linus Torvalds
2014-02-14 5:47 ` Nishanth Aravamudan
2014-02-14 5:47 ` Nishanth Aravamudan
2014-02-13 21:06 ` Andrew Morton
2014-02-13 21:06 ` Andrew Morton
2014-02-13 21:42 ` Nishanth Aravamudan
2014-02-13 21:42 ` Nishanth Aravamudan
2014-02-10 8:29 ` [RFC PATCH V5 RESEND] " Raghavendra K T
2014-02-10 8:29 ` Raghavendra K T
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52FC6F2A.30905@linux.vnet.ibm.com \
--to=raghavendra.kt@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=damien.ramonda@intel.com \
--cc=david.a.cohen@linux.intel.com \
--cc=fengguang.wu@intel.com \
--cc=jack@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.com \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.