On Thu, 13 Nov 2008 12:10:19 +0900 (JST)
Ryo Tsuruta <email@example.com> wrote:
> Hi everyone,
> This is a new release of dm-ioband and bio-cgroup. With this release,
> the overhead of bio-cgroup is significantly reduced and the accuracy
> of block I/O tracking is much improved. These patches are for
>From my point of view, a way to record bio_cgroup_id to page_cgroup is quite neat
My concern is "bio_cgroup_id". It's provided only for bio_cgroup.
In this summer, I tried to add swap_cgroup_id only for mem+swap controller but
commenters said "please provide "id and lookup" in cgroup layer, it should be useful."
And I agree them. (and postponed it
Could you try "id" in cgroup layer ? How do you think, Paul and others ?
That's my only concern and if I/O controller people decides to live with
this bio tracking infrastracture,
page -> page_cgroup -> bio_cgroup_id
I have no objections. And enqueue necessary changes to my queue.
> Enjoy it!
> Dm-ioband is an I/O bandwidth controller implemented as a
> device-mapper driver, which gives specified bandwidth to each job
> running on the same block device. A job is a group of processes
> or a virtual machine such as KVM or Xen.
> I/O throughput on dm-ioband is excellent not only on SATA storage
> but on SDD, which as good as the one without dm-ioband.
> Changes from the previous release:
> - Fix a bug that create_workqueue() is called during spin lock
> when creating a new ioband group.
> - A new tunable parameter "carryover" is added, which specifies
> how many tokens an ioband group can keep for the future use
> when the group isn't so active.
> - Other policies to schedule BIOs.
> - Policies which fits SSD.
> - Guarantee response time.
> - Guarantee throughput.
> - Policies which fits Highend Storage or hardware raid storage.
> - Some LUNs may share the same bandwidth.
> - Support WRITE_BARRIER when the device-mapper layer supports it.
> - Implement the algorithm of dm-ioband in the block I/O layer
> Bio-cgroup is a BIO tracking mechanism, which is implemented on the
> cgroup memory subsystem. With the mechanism, it is able to determine
> which cgroup each of bio belongs to, even when the bio is one of
> delayed-write requests issued from a kernel thread such as pdflush.
> Changes from the previous release:
> - This release is a new implementation.
> - This is based on the new design of the cgroup memory controller
> framework, which pre-allocates all cgroup-page data structures to
> reduce the overhead.
> - The overhead to trace block I/O requests is much smaller than that
> of the previous one. This is done by making every page have the id
> of its corresponding bio-cgroup instead of the pointer to it and
> most of spin-locks and atomic operations are gone.
> - This implementation uses only 4 bytes per page for I/O tracking
> while the previous version uses 12 bytes on a 32 bit machine and 24
> bytes on a 64 bit machine.
> - The accuracy of I/O tracking is improved that it can trace I/O
> requests even when the processes which issued these requests get
> moved into another bio-cgroup.
> - Support bounce buffers tracking. They will have the same bio-cgroup
> owners as the original I/O requests.
> - Support to track I/O requests that will be generated in Linux
> kernel, such as those of RAID0 and RAID5.
> A list of patches
> The following is a list of patches:
> [PATCH 0/8] I/O bandwidth controller and BIO tracking
> [PATCH 1/8] dm-ioband: Introduction
> [PATCH 2/8] dm-ioband: Source code and patch
> [PATCH 3/8] dm-ioband: Document
> [PATCH 4/8] bio-cgroup: Introduction
> [PATCH 5/8] bio-cgroup: The new page_cgroup framework
> [PATCH 6/8] bio-cgroup: The body of bio-cgroup
> [PATCH 7/8] bio-cgroup: Page tracking hooks
> [PATCH 8/8] bio-cgroup: Add a cgroup support to dm-ioband
> Please see the following site for more information:
> Linux Block I/O Bandwidth Control Project
> Ryo Tsuruta
dm-devel mailing list