Re: [PATCH] cgroup: limit block I/O bandwidth

From: Balbir Singh
Date: Fri Jan 25 2008 - 03:46:45 EST


* Andrea Righi <righiandr@xxxxxxxxxxxxxxxxxxxxx> [2008-01-24 14:48:01]:

> Pavel Emelyanov wrote:
> > Andrea Righi wrote:
> >> Balbir Singh wrote:
> >>> * Andrea Righi <righiandr@xxxxxxxxxxxxxxxxxxxxx> [2008-01-23 16:23:59]:
> >>>
> >>>> Probably tracking who dirtied the pages would be the best approach, but
> >>>> we want also to reduce the overhead of this tracking. So, we should find
> >>>> a smart way to track which cgroup dirtied the pages and then only when
> >>>> the i/o scheduler dispatches the write requests of those pages, account
> >>>> the i/o operations to the opportune cgroup. In this way throttling could
> >>>> be done probably in __set_page_dirty() as well.
> >>>>
> >>> I think the OpenVZ controller works that way.
> >> Well... looking at the code it seems that OpenVZ doesn't use this
> >> strategy, instead performs UBC-based I/O accounting looking at the
> >
> > We do track the task (well - the beancounter) who made the page
> > dirty and then use this context for async write scheduling.
>
> Interesting... now I see that task_io_account_write() takes a
> "struct page *" as argument and the "struct page" has the beancounter
> pointer.
>
> >
> >> __set_page_dirty*() for writes and submit_bio() for reads. Then,
> >> independently from accounting data, it uses per-UBC i/o priority model
> >> that is mapped directly on the CFQ i/o priority model.
> >
> > Vasisly Tarasov (out I/O guru ;)) has already prepared an RFC patchset
> > for Jens with group scheduler (for sync requests only) and is going to
> > send it this or next week.
> >
>
> Very good! I look forward for this patchset.
>

Excellent! Can't wait to test it.

> Thanks,
> -Andrea

--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL
--
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/