qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] n ways block filters


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] n ways block filters
Date: Mon, 17 Mar 2014 17:02:55 +0100

On Mon, Mar 17, 2014 at 4:12 AM, Fam Zheng <address@hidden> wrote:
> On Fri, 03/14 16:57, Benoît Canet wrote:
>> I discussed a bit with Stefan on the list and we came to the conclusion that 
>> the
>> block filter API need group support.
>>
>> filter group:
>> -------------
>>
>> My current plan to implement this is to add the following fields to the 
>> BlockDriver
>> structure.
>>
>> int bdrv_add_filter_group(const char *name, QDict options);
>> int bdrv_reconfigure_filter_group(const char *name, QDict options);
>> int bdrv_destroy_filter_group(const char *name);
>>
>> These three extra method would allow to create, reconfigure or destroy a 
>> block
>> filter group. A block filter group contain the shared or non shared state of 
>> the
>> blockfilter. For throttling it would contains the ThrottleState structure.
>>
>> Each block filter driver would contains a linked list of linked list where 
>> the
>> BDS are registered grouped by filter groups state.
>
> Sorry I don't fully understand this. Does a filter group contain multiple 
> block
> filters, and every block filter has effect on multiple BDSes? Could you give 
> an
> example?

Just to why a "group" mechanism is useful:

You want to impose a 2000 IOPS limit for the entire VM.  Currently
this is not possible because each drive has its own throttling state.

We need a way to say certain drives are part of a group.  All drives
in a group share the same throttling state and therefore a 2000 IOPS
limit is shared amongst them.

Whether this concept is common enough to warrant a generic "filter
group" API, I'm not sure.  But we at least need this for I/O
throttling.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]