qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] qcow2x


From: Kevin Wolf
Subject: Re: [Qemu-devel] qcow2x
Date: Tue, 02 Aug 2011 17:43:24 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20110707 Thunderbird/5.0

Am 02.08.2011 17:29, schrieb Frediano Ziglio:
>>> - L2 allocation can be done with relative data (this is not easy to do
>>> with current code)
>>
>> What do you mean by that?
>>
> 
> Let's take an example. By allocation I mean give a position to
> data/l2/refcount_table. Usually you cannot update/write L2 before data
> is allocated and written if you don't want to get a L2 entry pointing
> to garbage or unwritten data (if physically you write to a sector you
> get new data or old one on fail, not data changing to anything else).
> The exception to this is when even L2 table is not allocated. In this
> case you can write L2 table with data cause in case of failure this
> new L2 table is just not attached to anything (cause L1 still point to
> old L2 or is not allocated). My patch can collapse these two cluster
> writes in a single one. The key point of the patch is mainly
> collapsing all writes as you can not blocking other writes if not
> needed.

Ok, I see.

Not sure if it makes any measurable difference. With 64k clusters, an L2
allocation happens only every 512 MB. But if it's not much code to
support it, it's probably a good thing.

>>> - data/l2 are allocated sequentially (if there are not hole freed) but
>>> written in another order. This cause excessive file fragmentation with
>>> default cache mode, for instance on xfs file is allocated quite
>>> sequentially on every write so any no-sequential write create a
>>> different fragment.
>>>
>>> Currently I'm getting these times with iotests (my_cleanup branch is
>>> another branch more conservative with a patch to collapse reference
>>> decrement, note that 011 and 026 are missing, still not working)
>>
>> Note that qemu-iotests is often a good indicator, but the tools often
>> show different behaviour from real guests, so you should also run
>> benchmarks in a VM.
>>
> 
> I know, one reason is that guest usually do a lot of small write/read
> (probably this is how hardware work but I don't know this side that
> much, usually I didn't see request longer than 128 sectors).
> 
>>>     X    C    B
>>> 001 6    3    7
>>> 002 3    3    4
>>> 003 3    3    3
>>> 004 0    1    0
>>> 005 0    0    0
>>> 007 35   32   36
>>> 008 3    4    3
>>> 009 1    0    0
>>> 010 0    0    0
>>> 012 0    0    2
>>> 013 125  err  158
>>> 014 189  err  203
>>> 015 48   70   610
>>> 017 4    4    4
>>> 018 5    5    5
>>> 019 4    4    4
>>> 020 4    4    4
>>> 021 0    0    0
>>> 022 74   103  103
>>> 023 75   err  95
>>> 024 3    3    3
>>> 025 3    3    6
>>> 027 1    1    0
>>> 028 1    1    1
>>>
>>> X qcow2x
>>> C my_cleanup
>>> B kevin/coroutine-block
>>>
>>> Currently code is quite "spaghetti" code (needs a lot of cleanup,
>>> checks, better error handling and so on). Taking into account that
>>> code require additional optimizations and is full of internal
>>> debugging time times are quite good.
>>>
>>> Main questions are:
>>> - are somebody interesting ?
>>> - how can I send such a patch for review considering that is quite big
>>> (I know, I have to clean a bit too) ?
>>
>> You'll need to split it up into reviewable pieces. But let me have a
>> look at your git tree first.
>>
> 
> I have an account on gitorious but still my repo is only local. Do you
> suggest a different provider or gitorious is ok for you?

Works for me. Just anything that I can pull from.

>> Are you in the #qemu IRC channel? I think we should coordinate our qcow2
>> work a bit in order to avoid conflicting or duplicate work.
> 
> No, I don't use irc that much (time shift problems and also connection
> too). When are you online?

Usually until something like 18:00 CEST (16:00 UTC).

Kevin



reply via email to

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