Re: [RFC][PATCH 02/11] blkiocg async: The main part of iotrack

From: Andrea Righi
Date: Sat Jul 10 2010 - 06:06:25 EST


On Fri, Jul 09, 2010 at 07:09:31PM -0400, Munehiro Ikeda wrote:
> KAMEZAWA Hiroyuki wrote, on 07/09/2010 03:38 AM:
> >On Thu, 08 Jul 2010 23:15:30 -0400
> >Munehiro Ikeda<m-ikeda@xxxxxxxxxxxxx> wrote:
> >
> >>Signed-off-by: Hirokazu Takahashi<taka@xxxxxxxxxxxxx>
> >>Signed-off-by: Ryo Tsuruta<ryov@xxxxxxxxxxxxx>
> >>Signed-off-by: Andrea Righi<arighi@xxxxxxxxxxx>
> >>Signed-off-by: Munehiro "Muuhh" Ikeda<m-ikeda@xxxxxxxxxxxxx>
> >>---
> >> block/Kconfig.iosched | 8 +++
> >> block/Makefile | 1 +
> >> block/blk-iotrack.c | 129 +++++++++++++++++++++++++++++++++++++++++++
> >> include/linux/blk-iotrack.h | 62 +++++++++++++++++++++
> >> include/linux/page_cgroup.h | 25 ++++++++
> >> init/Kconfig | 2 +-
> >> mm/page_cgroup.c | 91 +++++++++++++++++++++++++++---
> >> 7 files changed, 309 insertions(+), 9 deletions(-)
> >> create mode 100644 block/blk-iotrack.c
> >> create mode 100644 include/linux/blk-iotrack.h
>
> (snip)
>
> >>+/**
> >>+ * blk_iotrack_set_owner() - set the owner ID of a page.
> >>+ * @page: the page we want to tag
> >>+ * @mm: the mm_struct of a page owner
> >>+ *
> >>+ * Make a given page have the blkio-cgroup ID of the owner of this page.
> >>+ */
> >>+int blk_iotrack_set_owner(struct page *page, struct mm_struct *mm)
> >>+{
> >>+ struct blkio_cgroup *blkcg;
> >>+ unsigned short id = 0; /* 0: default blkio_cgroup id */
> >>+
> >>+ if (blk_iotrack_disabled())
> >>+ return 0;
> >>+ if (!mm)
> >>+ goto out;
> >>+
> >>+ rcu_read_lock();
> >>+ blkcg = task_to_blkio_cgroup(rcu_dereference(mm->owner));
> >>+ if (likely(blkcg))
> >>+ id = css_id(&blkcg->css);
> >>+ rcu_read_unlock();
> >>+out:
> >>+ return page_cgroup_set_owner(page, id);
> >>+}
> >>+
> >
> >I think this is bad. I/O should be charged against threads i.e. "current",
> >because CFQ/blockio-cgroup provides per-thread control.
> >mm->owner is not suitable, I think.
>
> OK, thanks.

BTW, this should be automatically fixed if you remove anonymous pages
tracking.

-Andrea
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/