Re: [Lsf] IO less throttling and cgroup aware writeback (Was: Re: Preliminary Agenda and Activities for LSF)

Wu Fengguang
2011-04-19T14:17:20Z

[snip]
> > > > For throttling case, apart from metadata, I found that with simple
> > > > throttling of data I ran into issues with journalling with ext4 mounuted
> > > > in ordered mode. So it was suggested that WRITE IO throttling should
> > > > not be done at device level instead try to do it in higher layers,
> > > > possibly balance_dirty_pages() and throttle process early.
> > >
> > > The problem with doing it at the page cache entry level is that
> > > cache hits then get throttled. It's not really a an IO controller at
> > > that point, and the impact on application performance could be huge
> > > (i.e. MB/s instead of GB/s).
> >
> > Agreed that throttling cache hits is not a good idea. Can we determine
> > if page being asked for is in cache or not and charge for IO accordingly.
>
> You'd need hooks in find_or_create_page(), though you have no
> context of whether a read or a write is in progress at that point.

I'm confused. Where is the throttling at cache hits?

The balance_dirty_pages() throttling kicks in at write() syscall and
page fault time. For example, generic_perform_write(), do_wp_page()
and __do_fault() will explicitly call
balance_dirty_pages_ratelimited() to do the write throttling.

Thanks,
Fengguang