From: Lai Jiangshan <laijs@cn.fujitsu.com>
To: Paul Jackson <pj@sgi.com>
Cc: akpm@linux-foundation.org, menage@google.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cpuset: make ntasks to be a monotonic increasing value
Date: Fri, 01 Aug 2008 09:35:26 +0800 [thread overview]
Message-ID: <4892685E.2000000@cn.fujitsu.com> (raw)
In-Reply-To: <20080731083706.e6bd4acc.pj@sgi.com>
Paul Jackson wrote:
> Bottom line - my priorities for non-critical code paths, most important first:
> 1) It must work.
> 2) Keep it easy for humans to understand.
> 3) Reduce kernel text size.
> 4) Reduce CPU cycles.
>
I agree, Thank you!
How about this one?
The loop after this patch applied is:
ntasks_now = cgroup_task_count(cs->css.cgroup);
while (1) {
ntasks = ntasks_now; /* guess */
ntasks += fudge;
mmarray = kmalloc(ntasks * sizeof(*mmarray), GFP_KERNEL);
if (!mmarray)
goto done;
read_lock(&tasklist_lock); /* block fork */
ntasks_now = cgroup_task_count(cs->css.cgroup);
if (ntasks_now <= ntasks)
break; /* got enough */
read_unlock(&tasklist_lock); /* try again */
kfree(mmarray);
}
I think the readability of this code is as good as original's.
And it's better in semantic meaning.
The old non monotonic increasing value is caused by the redundant
cgroup_task_count(). Removing it is good for keeping ntasks
increasing(not need additional arithmetic compare or max statement).
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index d5ab79c..56a057f 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -930,7 +930,7 @@ static int update_tasks_nodemask(struct cpuset *cs, const nodemask_t *oldmem)
{
struct task_struct *p;
struct mm_struct **mmarray;
- int i, n, ntasks;
+ int i, n, ntasks, ntasks_now;
int migrate;
int fudge;
struct cgroup_iter it;
@@ -949,14 +949,16 @@ static int update_tasks_nodemask(struct cpuset *cs, const nodemask_t *oldmem)
* few more lines of code, we can retry until we get a big
* enough mmarray[] w/o using GFP_ATOMIC.
*/
+ ntasks_now = cgroup_task_count(cs->css.cgroup);
while (1) {
- ntasks = cgroup_task_count(cs->css.cgroup); /* guess */
+ ntasks = ntasks_now; /* guess */
ntasks += fudge;
mmarray = kmalloc(ntasks * sizeof(*mmarray), GFP_KERNEL);
if (!mmarray)
goto done;
read_lock(&tasklist_lock); /* block fork */
- if (cgroup_task_count(cs->css.cgroup) <= ntasks)
+ ntasks_now = cgroup_task_count(cs->css.cgroup);
+ if (ntasks_now <= ntasks)
break; /* got enough */
read_unlock(&tasklist_lock); /* try again */
kfree(mmarray);
prev parent reply other threads:[~2008-08-01 1:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-31 3:22 [PATCH] cpuset: make ntasks to be a monotonic increasing value Lai Jiangshan
2008-07-31 7:10 ` Li Zefan
2008-07-31 7:45 ` Lai Jiangshan
2008-07-31 12:23 ` Paul Jackson
2008-07-31 13:10 ` Lai Jiangshan
2008-07-31 13:37 ` Paul Jackson
2008-07-31 17:06 ` Paul Menage
2008-07-31 19:38 ` Paul Jackson
2008-07-31 20:02 ` Paul Menage
2008-08-01 1:35 ` Lai Jiangshan [this message]
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=4892685E.2000000@cn.fujitsu.com \
--to=laijs@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=menage@google.com \
--cc=pj@sgi.com \
/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.