From: Hirokazu Takahashi <taka@valinux.co.jp>
To: kamezawa.hiroyu@jp.fujitsu.com
Cc: balbir@linux.vnet.ibm.com, hugh@veritas.com,
yamamoto@valinux.co.jp, ak@suse.de, nickpiggin@yahoo.com.au,
linux-mm@kvack.org
Subject: Re: [RFC][PATCH] radix-tree based page_cgroup. [1/7] definitions for page_cgroup
Date: Mon, 25 Feb 2008 16:47:45 +0900 (JST) [thread overview]
Message-ID: <20080225.164745.47821156.taka@valinux.co.jp> (raw)
In-Reply-To: <20080225121034.bd74be07.kamezawa.hiroyu@jp.fujitsu.com>
Hi,
> (This is one of a series of patch for "lookup page_cgroup" patches..)
>
> * Exporting page_cgroup definition.
> * Remove page_cgroup member from sturct page.
> * As result, PAGE_CGROUP_LOCK_BIT and assign/access functions are removed.
>
> Other chages will appear in following patches.
> There is a change in the structure itself, spin_lock is added.
>
> Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
(snip)
> +#ifdef CONFIG_CGROUP_MEM_CONT
> +/*
> + * page_cgroup is yet another mem_map structure for accounting usage.
> + * but, unlike mem_map, allocated on demand for accounted pages.
> + * see also memcontrol.h
> + * In nature, this cosumes much amount of memory.
> + */
> +
> +struct mem_cgroup;
> +
> +struct page_cgroup {
> + struct page *page; /* the page this accounts for*/
> + struct mem_cgroup *mem_cgroup; /* current cgroup subsys */
> + int flags; /* See below */
> + int refcnt; /* reference count */
> + spinlock_t lock; /* lock for all above members */
> + struct list_head lru; /* for per cgroup LRU */
> +};
You can possible reduce the size of page_cgroup structure not to consume
a lot of memory. I think this is important.
I have some ideas:
(1) I don't think every struct page_cgroup needs to have a "lock" member.
I think one "lock" variable for several page_cgroup will be also enough
from a performance viewpoint. In addition, it will become low-impact for
cache memory. I guess it may be okay if each array of page_cgroup --
which you just introduced now -- has one lock variable.
(2) The "flags" member and the "refcnt" member can be encoded into
one member.
(3) The page member can be replaced with the page frame number and it will be
also possible to use some kind of ID instead of the mem_cgroup member.
This means these members can be encoded to one members with other members
such as "flags" and "refcnt"
You don't need to hurry to implement this but will you put these on the
ToDo list.
> +
> +/* flags */
> +#define PAGE_CGROUP_FLAG_CACHE (0x1) /* charged as cache. */
> +#define PAGE_CGROUP_FLAG_ACTIVE (0x2) /* is on active list */
I've been also wondering the preallocation of page_croup approach,
with which the page member of page_cgroup can be completely removed.
Thank you,
Hirokazu Takahashi.
--
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:[~2008-02-25 7:47 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-25 3:07 [RFC][PATCH] radix-tree based page_cgroup. [0/7] introduction KAMEZAWA Hiroyuki
2008-02-25 3:10 ` [RFC][PATCH] radix-tree based page_cgroup. [1/7] definitions for page_cgroup KAMEZAWA Hiroyuki
2008-02-25 7:47 ` Hirokazu Takahashi [this message]
2008-02-25 7:56 ` Balbir Singh
2008-02-25 8:03 ` KAMEZAWA Hiroyuki
2008-02-26 7:46 ` Hirokazu Takahashi
2008-02-26 9:07 ` KAMEZAWA Hiroyuki
2008-02-25 3:12 ` [RFC][PATCH] radix-tree based page_cgroup. [2/7] charge/uncharge KAMEZAWA Hiroyuki
2008-02-25 3:13 ` [RFC][PATCH] radix-tree based page_cgroup. [3/7] move lists KAMEZAWA Hiroyuki
2008-02-25 3:14 ` [RFC][PATCH] radix-tree based page_cgroup. [4/7] migration KAMEZAWA Hiroyuki
2008-02-25 3:16 ` [RFC][PATCH] radix-tree based page_cgroup. [5/7] force_empty KAMEZAWA Hiroyuki
2008-02-25 3:17 ` [RFC][PATCH] radix-tree based page_cgroup. [6/7] radix-tree based page cgroup KAMEZAWA Hiroyuki
2008-02-25 5:56 ` YAMAMOTO Takashi
2008-02-25 6:07 ` KAMEZAWA Hiroyuki
2008-02-25 6:40 ` Hirokazu Takahashi
2008-02-25 6:52 ` KAMEZAWA Hiroyuki
2008-02-25 7:05 ` Hirokazu Takahashi
2008-02-25 7:25 ` KAMEZAWA Hiroyuki
2008-02-25 8:02 ` Hirokazu Takahashi
2008-02-25 8:11 ` KAMEZAWA Hiroyuki
2008-02-25 8:28 ` KAMEZAWA Hiroyuki
2008-02-25 3:18 ` [RFC][PATCH] radix-tree based page_cgroup. [7/7] per cpu fast lookup KAMEZAWA Hiroyuki
2008-02-25 5:36 ` YAMAMOTO Takashi
2008-02-25 5:46 ` KAMEZAWA Hiroyuki
2008-02-26 13:26 ` minchan Kim
2008-02-26 13:31 ` minchan Kim
2008-02-26 23:37 ` KAMEZAWA Hiroyuki
2008-02-27 0:57 ` minchan Kim
2008-02-27 1:09 ` KAMEZAWA Hiroyuki
2008-02-27 1:21 ` minchan Kim
2008-02-25 3:19 ` [RFC][PATCH] radix-tree based page_cgroup. [8/7] vmalloc for large machines KAMEZAWA Hiroyuki
2008-02-25 7:06 ` KAMEZAWA Hiroyuki
2008-02-25 3:24 ` [RFC][PATCH] radix-tree based page_cgroup. [0/7] introduction Balbir Singh
2008-02-25 4:02 ` KAMEZAWA Hiroyuki
2008-02-25 3:31 ` KAMEZAWA Hiroyuki
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=20080225.164745.47821156.taka@valinux.co.jp \
--to=taka@valinux.co.jp \
--cc=ak@suse.de \
--cc=balbir@linux.vnet.ibm.com \
--cc=hugh@veritas.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=nickpiggin@yahoo.com.au \
--cc=yamamoto@valinux.co.jp \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox