All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Emelianov <xemul@openvz.org>
To: Andrew Morton <akpm@osdl.org>,
	Balbir Singh <balbir@linux.vnet.ibm.com>,
	Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Cc: Linux Containers <containers@lists.osdl.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	devel@openvz.org
Subject: [PATCH 2/8] Add container pointer on struct page
Date: Mon, 04 Jun 2007 17:29:39 +0400	[thread overview]
Message-ID: <466413C3.5020303@openvz.org> (raw)
In-Reply-To: <466412C5.1060104@openvz.org>

Each page is supposed to have an owner - the container
that touched the page first. The owner stays alive during
the page lifetime even if the task that touched the page
dies or moves to another container.

This ownership is the forerunner for the "fair" page sharing
accounting, in which page has as may owners as it is really
used by.

Page ownership getter/setter are done as static inline function.

Signed-off-by: Pavel Emelianov <xemul@openvz.org>

---

diff -upr linux-2.6.22-rc2-mm1.orig/include/linux/mm.h linux-2.6.22-rc2-mm1-2/include/linux/mm.h
--- linux-2.6.22-rc2-mm1.orig/include/linux/mm.h	2007-05-30 12:32:35.000000000 +0400
+++ linux-2.6.22-rc2-mm1-2/include/linux/mm.h	2007-06-01 16:35:15.000000000 +0400
@@ -249,6 +249,30 @@ struct vm_operations_struct {
 
 struct mmu_gather;
 struct inode;
+struct page_container;
+
+#ifdef CONFIG_RSS_CONTAINER
+static inline struct page_container *page_container(struct page *pg)
+{
+	return pg->rss_container;
+}
+
+static inline void set_page_container(struct page *pg,
+		struct page_container *container)
+{
+	pg->rss_container = container;
+}
+#else
+static inline struct page_container *page_container(struct page *pg)
+{
+	return NULL;
+}
+
+static inline void set_page_container(struct page *pg,
+		struct page_container *container)
+{
+}
+#endif
 
 #define page_private(page)		((page)->private)
 #define set_page_private(page, v)	((page)->private = (v))
diff -upr linux-2.6.22-rc2-mm1.orig/include/linux/mm_types.h linux-2.6.22-rc2-mm1-2/include/linux/mm_types.h
--- linux-2.6.22-rc2-mm1.orig/include/linux/mm_types.h	2007-05-30 12:32:35.000000000 +0400
+++ linux-2.6.22-rc2-mm1-2/include/linux/mm_types.h	2007-06-01 16:35:13.000000000 +0400
@@ -83,6 +83,9 @@ struct page {
 	unsigned int gfp_mask;
 	unsigned long trace[8];
 #endif
+#ifdef CONFIG_RSS_CONTAINER
+	struct page_container *rss_container;
+#endif
 };
 
 #endif /* _LINUX_MM_TYPES_H */


  parent reply	other threads:[~2007-06-04 13:25 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-04 13:25 [PATCH 0/8] RSS controller based on process containers (v3.1) Pavel Emelianov
2007-06-04 13:28 ` [PATCH 1/8] Resource counters Pavel Emelianov
2007-06-04 13:29 ` Pavel Emelianov [this message]
2007-06-04 13:31 ` [PATCH 3/8] Add container pointer on mm_struct Pavel Emelianov
2007-06-04 13:33 ` [PATCH 4/8] Scanner changes needed to implement per-container scanner Pavel Emelianov
2007-06-04 13:38 ` [PATCH 5/8] RSS container core Pavel Emelianov
2007-06-04 13:40 ` [PATCH 6/8] Per container OOM killer Pavel Emelianov
2007-06-04 13:41 ` [PATCH 7/8] Per-container pages reclamation Pavel Emelianov
2007-06-04 13:46 ` [PATCH 8/8] RSS accounting hooks over the code Pavel Emelianov
2007-06-08 12:03 ` [PATCH 0/8] RSS controller based on process containers (v3.1) Herbert Poetzl
2007-06-08 12:39   ` Pavel Emelianov
2007-06-08 15:37     ` Herbert Poetzl
2007-06-08 17:07       ` Balbir Singh
2007-06-08 17:44       ` Vaidyanathan Srinivasan
  -- strict thread matches above, loose matches on Subject: below --
2007-05-30 15:24 [PATCH 0/8] RSS controller based on process containers (v3) Pavel Emelianov
2007-05-30 15:28 ` [PATCH 2/8] Add container pointer on struct page Pavel Emelianov
2007-05-30 21:45   ` Andrew Morton
2007-04-09 12:22 [PATCH 0/8] RSS controller based on process containers (v2) Pavel Emelianov
2007-04-09 12:41 ` [PATCH 2/8] Add container pointer on struct page Pavel Emelianov
2007-04-13 13:56   ` Jean-Pierre Dion
2007-04-13 14:52     ` Pavel Emelianov

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=466413C3.5020303@openvz.org \
    --to=xemul@openvz.org \
    --cc=akpm@osdl.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=containers@lists.osdl.org \
    --cc=devel@openvz.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=svaidy@linux.vnet.ibm.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.