Linux Container Development
 help / color / mirror / Atom feed
From: Andrea Righi <righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Paul Menage <menage-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Cc: xen-devel-GuqFBffKawuULHF6PoxzQEEOCMrvLtNR@public.gmane.org,
	containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	agk-9JcytcrH/bA+uJoB2kUjGw@public.gmane.org,
	Dave Hansen
	<dave-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
Subject: Re: Too many I/O controller patches
Date: Tue,  5 Aug 2008 11:27:52 +0200 (MEST)	[thread overview]
Message-ID: <48981D18.2070006@gmail.com> (raw)
In-Reply-To: <6599ad830808042255y59215481l5463d4dca9fb2001-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

Paul Menage wrote:
> On Mon, Aug 4, 2008 at 1:44 PM, Andrea Righi <righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> A safer approach IMHO is to force the tasks to wait synchronously on
>> each operation that directly or indirectly generates i/o.
>>
>> In particular the solution used by the io-throttle controller to limit
>> the dirty-ratio in memory is to impose a sleep via
>> schedule_timeout_killable() in balance_dirty_pages() when a generic
>> process exceeds the limits defined for the belonging cgroup.
>>
>> Limiting read operations is a lot more easy, because they're always
>> synchronized with i/o requests.
> 
> I think that you're conflating two issues:
> 
> - controlling how much dirty memory a cgroup can have at any given
> time (since dirty memory is much harder/slower to reclaim than clean
> memory)
> 
> - controlling how much effect a cgroup can have on a given I/O device.
> 
> By controlling the rate at which a task can generate dirty pages,
> you're not really limiting either of these. I think you'd have to set
> your I/O limits artificially low to prevent a case of a process
> writing a large data file and then doing fsync() on it, which would
> then hit the disk with the entire file at once, and blow away any QoS
> guarantees for other groups.

Anyway, dirty pages ratio is directly proportional to the IO that will
be performed on the real device, isn't it? this wouldn't prevent IO
bursts as you correctly say, but IMHO it is a simple and quite effective
way to measure the IO write activity of each cgroup on each affected
device.

To prevent the IO peaks I usually reduce the vm_dirty_ratio, but, ok,
this is a workaround, not the solution to the problem either.

IMHO, based on the dirty-page rate measurement, we should apply both
limiting methods: throttle dirty-pages ratio to prevent too many dirty
pages in the system (harde to reclaim and generating
unpredictable/unpleasant/unresponsiveness behaviour), and throttle the
dispatching of IO requests at the device-mapper/IO-scheduler layer to
smooth IO peaks/bursts, generated by fsync() and similar scenarios.

Another different approach could be to implement the measurement in the
elevator, looking at the elapsed between the IO request is issued to the
drive and the request is served. So, look at the start time T1,
completion time T2, take the difference (T2 - T1) and say: cgroup C1
consumed an amount of IO of (T2 - T1), and also use a token-bucket
policy to fill/reduce the "credits" of each IO cgroup in terms of IO
time slots. This would be a more precise measurement, instead of trying
to predict how expensive the IO operation will be, only looking at the
dirty-page ratio. Then throttle both dirty-page ratio *and* the
dispatching of the IO requests submitted by the cgroup that exceeds the
limits.

> 
> As Dave suggested, I think it would make more sense to have your
> page-dirtying throttle points hook into the memory controller instead,
> and allow the memory controller to track/limit dirty pages for a
> cgroup, and potentially do throttling as part of that.
> 
> Paul

Yes, implementing page-drity throttling in memory controller seems
absolutely reasonable. I can try to move in this direction, merge the
page-dirty throttling in memory controller and also post the RFC.

Thanks,
-Andrea

  parent reply	other threads:[~2008-08-05  9:27 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20080804.175126.193692178.ryov@valinux.co.jp>
     [not found] ` <20080804.175126.193692178.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-04  8:52   ` [PATCH 1/7] dm-ioband: Patch of device-mapper driver Ryo Tsuruta
2008-08-04 17:20   ` Too many I/O controller patches Dave Hansen
     [not found] ` <20080804.175214.226796876.ryov@valinux.co.jp>
     [not found]   ` <20080804.175214.226796876.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-04  8:52     ` [PATCH 2/7] dm-ioband: Documentation of design overview, installation, command reference and examples Ryo Tsuruta
     [not found]   ` <20080804.175254.71094191.ryov@valinux.co.jp>
     [not found]     ` <20080804.175254.71094191.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-04  8:57       ` [PATCH 3/7] bio-cgroup: Introduction Ryo Tsuruta
     [not found]     ` <20080804.175707.104036289.ryov@valinux.co.jp>
     [not found]       ` <20080804.175707.104036289.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-04  8:57         ` [PATCH 4/7] bio-cgroup: Split the cgroup memory subsystem into two parts Ryo Tsuruta
     [not found]       ` <20080804.175748.189722512.ryov@valinux.co.jp>
     [not found]         ` <20080804.175748.189722512.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-04  8:59           ` [PATCH 5/7] bio-cgroup: Remove a lot of ifdefs Ryo Tsuruta
2008-08-05 10:25           ` [PATCH 4/7] bio-cgroup: Split the cgroup memory subsystem into two parts Andrea Righi
     [not found]             ` <48982A9D.2000803-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-05 10:35               ` Hirokazu Takahashi
2008-08-06  7:54           ` KAMEZAWA Hiroyuki
     [not found]             ` <20080806165421.f76edd47.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-08-06 11:43               ` Hirokazu Takahashi
     [not found]             ` <20080806.204339.76736223.taka-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-06 13:45               ` kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A
     [not found]             ` <16255819.1218030343593.kamezawa.hiroyu@jp.fujitsu.com>
     [not found]               ` <16255819.1218030343593.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-08-07  7:25                 ` Hirokazu Takahashi
     [not found]               ` <20080807.162512.22162413.taka@valinux.co.jp>
     [not found]                 ` <20080807.162512.22162413.taka-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-07  8:21                   ` KAMEZAWA Hiroyuki
     [not found]                 ` <20080807172113.0788f800.kamezawa.hiroyu@jp.fujitsu.com>
     [not found]                   ` <20080807172113.0788f800.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-08-07  8:45                     ` Hirokazu Takahashi
     [not found]         ` <20080804.175934.112619046.ryov@valinux.co.jp>
     [not found]           ` <20080804.175934.112619046.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-04  9:00             ` [PATCH 6/7] bio-cgroup: Implement the bio-cgroup Ryo Tsuruta
     [not found]           ` <20080804.180022.183027902.ryov@valinux.co.jp>
     [not found]             ` <20080804.180022.183027902.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-04  9:01               ` [PATCH 7/7] bio-cgroup: Add a cgroup support to dm-ioband Ryo Tsuruta
2008-08-08  7:10               ` [PATCH 6/7] bio-cgroup: Implement the bio-cgroup Takuya Yoshikawa
     [not found]                 ` <489BF14D.6050009-gVGce1chcLdL9jVzuh4AOg@public.gmane.org>
2008-08-08  8:30                   ` Ryo Tsuruta
     [not found]                 ` <20080808.173045.112614776.ryov@valinux.co.jp>
     [not found]                   ` <20080808.173045.112614776.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-08  9:42                     ` Takuya Yoshikawa
     [not found]                   ` <489C150C.5040700@oss.ntt.co.jp>
     [not found]                     ` <489C150C.5040700-gVGce1chcLdL9jVzuh4AOg@public.gmane.org>
2008-08-08 11:41                       ` Ryo Tsuruta
     [not found] ` <1217870433.20260.101.camel@nimitz>
2008-08-04 18:22   ` Too many I/O controller patches Andrea Righi
2008-08-04 18:34   ` Balbir Singh
     [not found]   ` <48974BD3.6050503@linux.vnet.ibm.com>
     [not found]     ` <48974BD3.6050503-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2008-08-04 20:42       ` Andrea Righi
     [not found]   ` <489748E6.5080106@gmail.com>
     [not found]     ` <1217876521.20260.123.camel@nimitz>
2008-08-04 20:44       ` Andrea Righi
     [not found]       ` <48976A2A.9060600@gmail.com>
     [not found]         ` <48976A2A.9060600-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-04 20:50           ` Dave Hansen
2008-08-05  5:55           ` Paul Menage
     [not found]             ` <6599ad830808042255y59215481l5463d4dca9fb2001-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-08-05  6:03               ` Balbir Singh
2008-08-05  9:27               ` Andrea Righi [this message]
2008-08-05 16:25               ` Dave Hansen
2008-08-05  6:16           ` Hirokazu Takahashi
     [not found]         ` <1217883036.20260.137.camel@nimitz>
2008-08-05  6:28           ` Hirokazu Takahashi
     [not found]         ` <20080805.151642.31467169.taka@valinux.co.jp>
     [not found]           ` <20080805.151642.31467169.taka-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-05  9:31             ` Andrea Righi
     [not found]               ` <48981E03.5020406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-05 10:01                 ` Hirokazu Takahashi
     [not found]     ` <489748E6.5080106-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-04 19:02       ` Dave Hansen
2008-08-05  2:50       ` Satoshi UCHIDA
     [not found]     ` <000901c8f6a5$fe64ba30$fb2e2e90$@jp.nec.com>
2008-08-05  9:28       ` Andrea Righi
2008-08-05 12:01       ` Hirokazu Takahashi
     [not found]       ` <48981D3B.2020701@gmail.com>
     [not found]         ` <48981D3B.2020701-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-05 13:17           ` Ryo Tsuruta
2008-08-05 16:20           ` Dave Hansen
     [not found]         ` <1217953218.10907.25.camel@nimitz>
2008-08-06  2:44           ` KAMEZAWA Hiroyuki
     [not found]             ` <20080806114425.c0e9b24f.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2008-08-06  3:30               ` Balbir Singh
2008-08-06  6:48               ` Hirokazu Takahashi
2008-08-06  1:13   ` RFC: I/O bandwidth controller (was Re: Too many I/O controller patches) Fernando Luis Vázquez Cao
     [not found]     ` <20080806.151824.104049463.ryov@valinux.co.jp>
     [not found]       ` <20080806.151824.104049463.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-06  6:41         ` RFC: I/O bandwidth controller Fernando Luis Vázquez Cao
     [not found]       ` <1218004892.3950.12.camel@sebastian.kern.oss.ntt.co.jp>
     [not found]         ` <1218004892.3950.12.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-06 15:48           ` Dave Hansen
2008-08-07  4:38             ` Fernando Luis Vázquez Cao
     [not found]     ` <1217985189.3154.57.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-06  6:18       ` Ryo Tsuruta
2008-08-06 16:42       ` RFC: I/O bandwidth controller (was Re: Too many I/O controller patches) Balbir Singh
2008-08-06 18:01       ` I/O bandwidth controller (was Re: Too many I/O controllerpatches) Caitlin Bestler
2008-08-06 19:37       ` RFC: I/O bandwidth controller (was Re: Too many I/O controller patches) Naveen Gupta
2008-08-07  7:46       ` Andrea Righi
     [not found]         ` <489AA83F.1040306-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-07 13:59           ` Fernando Luis Vázquez Cao
     [not found]         ` <1218117578.11703.81.camel@sebastian.kern.oss.ntt.co.jp>
     [not found]           ` <1218117578.11703.81.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-11 20:52             ` Andrea Righi
     [not found]           ` <48A0A689.40908@gmail.com>
2008-08-12  7:18             ` Dong-Jae Kang
     [not found]               ` <loom.20080812T071504-212-eS7Uydv5nfjZ+VzJOa5vwg@public.gmane.org>
2008-08-12 11:10                 ` RFC: I/O bandwidth controller Hirokazu Takahashi
     [not found]               ` <20080812.201025.57762305.taka@valinux.co.jp>
     [not found]                 ` <20080812.201025.57762305.taka-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-12 12:55                   ` Andrea Righi
2008-08-12 13:15                   ` Fernando Luis Vázquez Cao
2008-08-13  6:23                   ` 강동재
     [not found]                 ` <48A18854.9020000@gmail.com>
     [not found]                   ` <48A18B1F.6080000@gmail.com>
     [not found]                     ` <48A18B1F.6080000-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-12 13:54                       ` Fernando Luis Vázquez Cao
     [not found]                     ` <1218549276.4456.100.camel@sebastian.kern.oss.ntt.co.jp>
2008-08-12 15:03                       ` James.Smart-iH1Dq9VlAzfQT0dZR+AlfA
     [not found]                       ` <1218549276.4456.100.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-12 20:44                         ` Andrea Righi
     [not found]                       ` <D1D4C3FF75F9354393DB8314DF43DEF2E7F7ED@xbl3.emulex.com>
     [not found]                         ` <D1D4C3FF75F9354393DB8314DF43DEF2E7F7ED-LoKyJLA1qJyFVXFzP2DCKQ@public.gmane.org>
2008-08-12 21:00                           ` Andrea Righi
     [not found]                       ` <48A1F62E.4090202@gmail.com>
     [not found]                         ` <48A1F62E.4090202-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-13  7:47                           ` Dong-Jae Kang
     [not found]                         ` <2891419e0808130047o702c9174tf36a4316ed247497@mail.gmail.com>
     [not found]                           ` <2891419e0808130047o702c9174tf36a4316ed247497-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-08-13 17:56                             ` Andrea Righi
     [not found]                   ` <48A18854.9020000-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2008-08-12 13:07                     ` Andrea Righi
2008-08-14 11:18                     ` David Collier-Brown
2008-08-08  6:21       ` Hirokazu Takahashi
     [not found]     ` <4899D464.1070506@linux.vnet.ibm.com>
     [not found]       ` <4899D464.1070506-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2008-08-06 18:00         ` RFC: I/O bandwidth controller (was Re: Too many I/O controller patches) Dave Hansen
2008-08-07  2:44         ` Fernando Luis Vázquez Cao
2008-08-07  3:01         ` Fernando Luis Vázquez Cao
     [not found]       ` <1218078075.3803.149.camel@sebastian.kern.oss.ntt.co.jp>
     [not found]         ` <1218078075.3803.149.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-08 11:39           ` RFC: I/O bandwidth controller Hirokazu Takahashi
     [not found]         ` <20080808.203944.29203232.taka@valinux.co.jp>
     [not found]           ` <20080808.203944.29203232.taka-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-12  5:35             ` Fernando Luis Vázquez Cao
     [not found]     ` <2846be6b0808061237o6667c609l21bdb5a765469e95@mail.gmail.com>
     [not found]       ` <2846be6b0808061237o6667c609l21bdb5a765469e95-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-08-07  8:30         ` Hirokazu Takahashi
2008-08-07 13:17         ` RFC: I/O bandwidth controller (was Re: Too many I/O controller patches) Fernando Luis Vázquez Cao
     [not found]       ` <1218115028.8460.353.camel@sebastian.kern.oss.ntt.co.jp>
     [not found]         ` <2846be6b0808111118q14995d84xdb9e6de500e415e2@mail.gmail.com>
     [not found]           ` <2846be6b0808111118q14995d84xdb9e6de500e415e2-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-08-11 16:35             ` David Collier-Brown
     [not found]         ` <1218115028.8460.353.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-11 18:18           ` Naveen Gupta
     [not found]     ` <20080808.152119.43521725.taka@valinux.co.jp>
     [not found]       ` <20080808.152119.43521725.taka-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-08  7:20         ` RFC: I/O bandwidth controller Ryo Tsuruta
2008-08-08 14:31         ` Hirokazu Takahashi
     [not found]       ` <20080808.162024.189720323.ryov@valinux.co.jp>
     [not found]         ` <20080808.162024.189720323.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-08  8:10           ` Fernando Luis Vázquez Cao
     [not found]         ` <1218183056.17648.6.camel@sebastian.kern.oss.ntt.co.jp>
     [not found]           ` <1218183056.17648.6.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-08 10:05             ` Ryo Tsuruta

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=48981D18.2070006@gmail.com \
    --to=righi.andrea-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=agk-9JcytcrH/bA+uJoB2kUjGw@public.gmane.org \
    --cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=dave-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
    --cc=dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=menage-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=xen-devel-GuqFBffKawuULHF6PoxzQEEOCMrvLtNR@public.gmane.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox