From: Pavel Emelianov <xemul@openvz.org>
To: Balbir Singh <balbir@in.ibm.com>
Cc: Linux MM <linux-mm@kvack.org>,
dev@openvz.org, ckrm-tech@lists.sourceforge.net,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
haveblue@us.ibm.com, rohitseth@google.com
Subject: Re: [RFC][PATCH 6/8] RSS controller shares allocation
Date: Fri, 10 Nov 2006 12:11:28 +0300 [thread overview]
Message-ID: <45544240.80609@openvz.org> (raw)
In-Reply-To: <20061109193619.21437.84173.sendpatchset@balbir.in.ibm.com>
Balbir Singh wrote:
> Support shares assignment and propagation.
>
> Signed-off-by: Balbir Singh <balbir@in.ibm.com>
> ---
>
> kernel/res_group/memctlr.c | 59 ++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 58 insertions(+), 1 deletion(-)
[snip]
> +static void recalc_and_propagate(struct memctlr *res, struct memctlr *parres)
> +{
> + struct resource_group *child = NULL;
> + int child_divisor;
> + u64 numerator;
> + struct memctlr *child_res;
> +
> + if (parres) {
> + if (res->shares.max_shares == SHARE_DONT_CARE ||
> + parres->shares.max_shares == SHARE_DONT_CARE)
> + return;
> +
> + child_divisor = parres->shares.child_shares_divisor;
> + if (child_divisor == 0)
> + return;
> +
> + numerator = (u64)(parres->shares.unused_min_shares *
> + res->shares.max_shares);
> + do_div(numerator, child_divisor);
> + numerator = (u64)(parres->nr_pages * numerator);
> + do_div(numerator, SHARE_DEFAULT_DIVISOR);
> + res->nr_pages = numerator;
> + }
> +
> + for_each_child(child, res->rgroup) {
> + child_res = get_memctlr(child);
> + BUG_ON(!child_res);
> + recalc_and_propagate(child_res, res);
Recursion? Won't it eat all the stack in case of a deep tree?
> + }
> +
> +}
> +
> +static void memctlr_shares_changed(struct res_shares *shares)
> +{
> + struct memctlr *res, *parres;
> +
> + res = get_memctlr_from_shares(shares);
> + if (!res)
> + return;
> +
> + if (is_res_group_root(res->rgroup))
> + parres = NULL;
> + else
> + parres = get_memctlr((struct container *)res->rgroup->parent);
> +
> + recalc_and_propagate(res, parres);
> +}
> +
> struct res_controller memctlr_rg = {
> .name = res_ctlr_name,
> .ctlr_id = NO_RES_ID,
> .alloc_shares_struct = memctlr_alloc_instance,
> .free_shares_struct = memctlr_free_instance,
> .move_task = memctlr_move_task,
> - .shares_changed = NULL,
> + .shares_changed = memctlr_shares_changed,
I didn't find where in this patches this callback is called.
WARNING: multiple messages have this Message-ID (diff)
From: Pavel Emelianov <xemul@openvz.org>
To: Balbir Singh <balbir@in.ibm.com>
Cc: Linux MM <linux-mm@kvack.org>,
dev@openvz.org, ckrm-tech@lists.sourceforge.net,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
haveblue@us.ibm.com, rohitseth@google.com
Subject: Re: [RFC][PATCH 6/8] RSS controller shares allocation
Date: Fri, 10 Nov 2006 12:11:28 +0300 [thread overview]
Message-ID: <45544240.80609@openvz.org> (raw)
In-Reply-To: <20061109193619.21437.84173.sendpatchset@balbir.in.ibm.com>
Balbir Singh wrote:
> Support shares assignment and propagation.
>
> Signed-off-by: Balbir Singh <balbir@in.ibm.com>
> ---
>
> kernel/res_group/memctlr.c | 59 ++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 58 insertions(+), 1 deletion(-)
[snip]
> +static void recalc_and_propagate(struct memctlr *res, struct memctlr *parres)
> +{
> + struct resource_group *child = NULL;
> + int child_divisor;
> + u64 numerator;
> + struct memctlr *child_res;
> +
> + if (parres) {
> + if (res->shares.max_shares == SHARE_DONT_CARE ||
> + parres->shares.max_shares == SHARE_DONT_CARE)
> + return;
> +
> + child_divisor = parres->shares.child_shares_divisor;
> + if (child_divisor == 0)
> + return;
> +
> + numerator = (u64)(parres->shares.unused_min_shares *
> + res->shares.max_shares);
> + do_div(numerator, child_divisor);
> + numerator = (u64)(parres->nr_pages * numerator);
> + do_div(numerator, SHARE_DEFAULT_DIVISOR);
> + res->nr_pages = numerator;
> + }
> +
> + for_each_child(child, res->rgroup) {
> + child_res = get_memctlr(child);
> + BUG_ON(!child_res);
> + recalc_and_propagate(child_res, res);
Recursion? Won't it eat all the stack in case of a deep tree?
> + }
> +
> +}
> +
> +static void memctlr_shares_changed(struct res_shares *shares)
> +{
> + struct memctlr *res, *parres;
> +
> + res = get_memctlr_from_shares(shares);
> + if (!res)
> + return;
> +
> + if (is_res_group_root(res->rgroup))
> + parres = NULL;
> + else
> + parres = get_memctlr((struct container *)res->rgroup->parent);
> +
> + recalc_and_propagate(res, parres);
> +}
> +
> struct res_controller memctlr_rg = {
> .name = res_ctlr_name,
> .ctlr_id = NO_RES_ID,
> .alloc_shares_struct = memctlr_alloc_instance,
> .free_shares_struct = memctlr_free_instance,
> .move_task = memctlr_move_task,
> - .shares_changed = NULL,
> + .shares_changed = memctlr_shares_changed,
I didn't find where in this patches this callback is called.
--
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>
next prev parent reply other threads:[~2006-11-10 9:16 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-09 19:35 [RFC][PATCH 0/8] RSS controller for containers Balbir Singh
2006-11-09 19:35 ` Balbir Singh
2006-11-09 19:35 ` [RFC][PATCH 1/8] Fix resource groups parsing, while assigning shares Balbir Singh
2006-11-09 19:35 ` Balbir Singh
2006-11-09 19:35 ` [RFC][PATCH 2/8] RSS controller setup Balbir Singh
2006-11-09 19:35 ` Balbir Singh
2006-11-09 19:35 ` [RFC][PATCH 3/8] RSS controller add callbacks Balbir Singh
2006-11-09 19:35 ` Balbir Singh
2006-11-09 19:36 ` [RFC][PATCH 4/8] RSS controller accounting Balbir Singh
2006-11-09 19:36 ` Balbir Singh
2006-11-10 9:06 ` Pavel Emelianov
2006-11-10 9:06 ` Pavel Emelianov
2006-11-10 9:29 ` Balbir Singh
2006-11-10 9:29 ` Balbir Singh
2006-11-09 19:36 ` [RFC][PATCH 5/8] RSS controller task migration support Balbir Singh
2006-11-09 19:36 ` Balbir Singh
2006-11-09 19:36 ` [RFC][PATCH 6/8] RSS controller shares allocation Balbir Singh
2006-11-09 19:36 ` Balbir Singh
2006-11-10 9:11 ` Pavel Emelianov [this message]
2006-11-10 9:11 ` Pavel Emelianov
2006-11-10 10:27 ` [ckrm-tech] " Balbir Singh
2006-11-10 10:27 ` Balbir Singh
2006-11-10 10:32 ` Pavel Emelianov
2006-11-10 10:32 ` Pavel Emelianov
2006-11-10 12:55 ` Balbir Singh
2006-11-10 12:55 ` Balbir Singh
2006-11-09 19:36 ` [RFC][PATCH 7/8] RSS controller fix resource groups parsing Balbir Singh
2006-11-09 19:36 ` Balbir Singh
2006-11-10 9:13 ` Pavel Emelianov
2006-11-10 9:13 ` Pavel Emelianov
2006-11-10 9:32 ` Balbir Singh
2006-11-10 9:32 ` Balbir Singh
2006-11-09 19:36 ` [RFC][PATCH 8/8] RSS controller support reclamation Balbir Singh
2006-11-09 19:36 ` Balbir Singh
2006-11-09 19:45 ` Arjan van de Ven
2006-11-09 19:45 ` Arjan van de Ven
2006-11-10 1:56 ` [ckrm-tech] " Balbir Singh
2006-11-10 1:56 ` Balbir Singh
2006-11-10 8:54 ` Pavel Emelianov
2006-11-10 8:54 ` Pavel Emelianov
2006-11-10 9:16 ` Balbir Singh
2006-11-10 9:16 ` Balbir Singh
2006-11-10 9:29 ` Pavel Emelianov
2006-11-10 9:29 ` Pavel Emelianov
2006-11-10 12:42 ` Balbir Singh
2006-11-10 12:42 ` Balbir Singh
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=45544240.80609@openvz.org \
--to=xemul@openvz.org \
--cc=balbir@in.ibm.com \
--cc=ckrm-tech@lists.sourceforge.net \
--cc=dev@openvz.org \
--cc=haveblue@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rohitseth@google.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.