From: Dong-Jae Kang <baramsori72-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org
Subject: Re: RFC: I/O bandwidth controller (was Re: Too many I/O controller patches)
Date: Tue, 12 Aug 2008 07:18:15 +0000 (UTC) [thread overview]
Message-ID: <loom.20080812T071504-212@post.gmane.org> (raw)
In-Reply-To: 48A0A689.40908@gmail.com
Andrea Righi <righi.andrea@...> writes:
>
> Fernando Luis Vázquez Cao wrote:
> >>> This seems to be the easiest part, but the current cgroups
> >>> infrastructure has some limitations when it comes to dealing with block
> >>> devices: impossibility of creating/removing certain control structures
> >>> dynamically and hardcoding of subsystems (i.e. resource controllers).
> >>> This makes it difficult to handle block devices that can be hotplugged
> >>> and go away at any time (this applies not only to usb storage but also
> >>> to some SATA and SCSI devices). To cope with this situation properly we
> >>> would need hotplug support in cgroups, but, as suggested before and
> >>> discussed in the past (see (0) below), there are some limitations.
> >>>
> >>> Even in the non-hotplug case it would be nice if we could treat each
> >>> block I/O device as an independent resource, which means we could do
> >>> things like allocating I/O bandwidth on a per-device basis. As long as
> >>> performance is not compromised too much, adding some kind of basic
> >>> hotplug support to cgroups is probably worth it.
> >>>
> >>> (0) http://lkml.org/lkml/2008/5/21/12
> >> What about using major,minor numbers to identify each device and account
> >> IO statistics? If a device is unplugged we could reset IO statistics
> >> and/or remove IO limitations for that device from userspace (i.e. by a
> >> deamon), but pluggin/unplugging the device would not be blocked/affected
> >> in any case. Or am I oversimplifying the problem?
> > If a resource we want to control (a block device in this case) is
> > hot-plugged/unplugged the corresponding cgroup-related structures inside
> > the kernel need to be allocated/freed dynamically, respectively. The
> > problem is that this is not always possible. For example, with the
> > current implementation of cgroups it is not possible to treat each block
> > device as a different cgroup subsytem/resource controlled, because
> > subsystems are created at compile time.
>
> The whole subsystem is created at compile time, but controller data
> structures are allocated dynamically (i.e. see struct mem_cgroup for
> memory controller). So, identifying each device with a name, or a key
> like major,minor, instead of a reference/pointer to a struct could help
> to handle this in userspace. I mean, if a device is unplugged a
> userspace daemon can just handle the event and delete the controller
> data structures allocated for this device, asynchronously, via
> userspace->kernel interface. And without holding a reference to that
> particular block device in the kernel. Anyway, implementing a generic
> interface that would allow to define hooks for hot-pluggable devices (or
> similar events) in cgroups would be interesting.
>
> >>> 3. & 4. & 5. - I/O bandwidth shaping & General design aspects
> >>>
> >>> The implementation of an I/O scheduling algorithm is to a certain extent
> >>> influenced by what we are trying to achieve in terms of I/O bandwidth
> >>> shaping, but, as discussed below, the required accuracy can determine
> >>> the layer where the I/O controller has to reside. Off the top of my
> >>> head, there are three basic operations we may want perform:
> >>> - I/O nice prioritization: ionice-like approach.
> >>> - Proportional bandwidth scheduling: each process/group of processes
> >>> has a weight that determines the share of bandwidth they receive.
> >>> - I/O limiting: set an upper limit to the bandwidth a group of tasks
> >>> can use.
> >> Use a deadline-based IO scheduling could be an interesting path to be
> >> explored as well, IMHO, to try to guarantee per-cgroup minimum bandwidth
> >> requirements.
> > Please note that the only thing we can do is to guarantee minimum
> > bandwidth requirement when there is contention for an IO resource, which
> > is precisely what a proportional bandwidth scheduler does. An I missing
> > something?
>
> Correct. Proportional bandwidth automatically allows to guarantee min
> requirements (instead of IO limiting approach, that needs additional
> mechanisms to achive this).
>
> In any case there's no guarantee for a cgroup/application to sustain
> i.e. 10MB/s on a certain device, but this is a hard problem anyway, and
> the best we can do is to try to satisfy "soft" constraints.
I think guaranteeing the minimum I/O bandwidth is very important. In the
business site, especially in streaming service system, administrator requires
the functionality to satisfy QoS or performance of their service.
Of course, IO throttling is important, but, personally, I think guaranteeing
the minimum bandwidth is more important than limitation of maximum bandwidth
to satisfy the requirement in real business sites.
And I know Andrea’s io-throttle patch supports the latter case well and it is
very stable.
But, the first case(guarantee the minimum bandwidth) is not supported in any
patches.
Is there any plans to support it? and Is there any problems in implementing it?
I think if IO controller can support guaranteeing the minimum bandwidth and
work-conserving mode simultaneously, it more easily satisfies the requirement
of the business sites.
Additionally, I didn’t understand “Proportional bandwidth automatically allows
to guarantee min
requirements” and “soft constraints”.
Can you give me a advice about this ?
Thanks in advance.
Dong-Jae Kang
_______________________________________________
Containers mailing list
Containers@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
next prev parent reply other threads:[~2008-08-12 7:18 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.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] ` <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] ` <1217870433.20260.101.camel@nimitz>
2008-08-04 18:22 ` 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
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] ` <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] ` <1217985189.3154.57.camel-xpvPi5bcW5X5OjGIXfuPlhrrLbDL3r4M6qtp775pBPw@public.gmane.org>
2008-08-06 6:18 ` RFC: I/O bandwidth controller 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 [this message]
[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] ` <20080808.152119.43521725.taka@valinux.co.jp>
[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
[not found] ` <20080808.152119.43521725.taka-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2008-08-08 7:20 ` Ryo Tsuruta
2008-08-08 14:31 ` Hirokazu Takahashi
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=loom.20080812T071504-212@post.gmane.org \
--to=baramsori72-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@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