Re: Block IO Controller V4

From: Corrado Zoccolo
Date: Mon Nov 30 2009 - 10:34:42 EST


Hi Vivek,
On Mon, Nov 30, 2009 at 3:59 AM, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote:
> Hi Jens,
> [snip]
> TODO
> ====
> - Direct random writers seem to be very fickle in terms of workload
> Âclassification. They seem to be switching between sync-idle and sync-noidle
> Âworkload type in a little unpredictable manner. Debug and fix it.
>

Are you still experiencing erratic behaviour after my patches were
integrated in for-2.6.33?

> - Support async IO control (buffered writes).
I was thinking about this.
Currently, writeback can either be issued by a kernel daemon (when
actual dirty ratio is > background dirty ratio, but < dirty_ratio) or
from various processes, if the actual dirty ratio is > dirty ratio.
Could the writeback issued in the context of a process be marked as sync?
In this way:
* normal writeback when system is not under pressure will run in the
root group, without interferring with sync workload
* the writeback issued when we have high dirty ratio will have more
priority, so the system will return in a normal condition quicker.
* your code will work out of the box, in fact processes with lower
weight will complete less I/O, therefore they will be slowed down more
than higher weight ones.

>
> ÂBuffered writes is a beast and requires changes at many a places to solve the
> Âproblem and patchset becomes huge. Hence first we plan to support only sync
> ÂIO in control then work on async IO too.
>
> ÂSome of the work items identified are.
>
> Â Â Â Â- Per memory cgroup dirty ratio
> Â Â Â Â- Possibly modification of writeback to force writeback from a
> Â Â Â Â Âparticular cgroup.
> Â Â Â Â- Implement IO tracking support so that a bio can be mapped to a cgroup.
> Â Â Â Â- Per group request descriptor infrastructure in block layer.
> Â Â Â Â- At CFQ level, implement per cfq_group async queues.
>
> ÂIn this patchset, all the async IO goes in system wide queues and there are
> Âno per group async queues. That means we will see service differentiation
> Âonly for sync IO only. Async IO willl be handled later.
>
> - Support for higher level policies like max BW controller.
> - Support groups of RT class also.

Thanks,
Corrado
--
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/