Re: [ANNOUNCE] kvm-14 release

Aurelien Jarno
2007-02-26T15:43:51Z

Laurent Vivier a écrit :
> Anthony Liguori wrote:
>> Laurent Vivier wrote:
>>> Avi Kivity wrote:
>>>
>>>> Aurelien Jarno wrote:
>>>>
>>>>>
>>>>>
>>>>>> What is your disk image file format, or are you using a partition?
>>>>>>
>>>>>>
>>>>> I am using a raw image file on an ext3 partition.
>>>>>
>>>>>
>>>>>
>>>>>> Do the results change (on kvm-14) if you pin the guest to a core with
>>>>>> 'taskset 1 qemu ...'
>>>>>>
>>>>>>
>>>>> Bingo. It now works even faster than kvm-13!
>>>>>
>>>>> real 0m22.307s
>>>>> user 0m13.935s
>>>>> sys 0m4.720
>>>>>
>>>>>
>>>>>
>>>> I'm guessing this is due to the glibc aio implementation, which uses
>>>> threads instead of true aio. The threads may cause the vcpu to migrate
>>>> frequently from one code to another.
>>>>
>>>> There are two possible solutions:
>>>>
>>>> - use native aio from http://www.bullopensource.org/posix/. I think
>>>> the aio signal patches are not yet in, so this may not work.
>>>> - teach the scheduler about the cost of migrating vcpus
>>>> The first approach will solve itself eventually, though slowly if the
>>>> current slow rate of aio merging continues. We'll have to do the second.
>>>>
>>>>
>>> if you prefer the first one, Sébastien will release very soon aio patches for
>>> 2.6.20 with an up-to-date libposix-aio.
>>>
>> Hi Laurent,
>>
>> I gave that a shot a little bit ago. Ran into two problems.
>>
>> 1) Couldn't avoid linking to -lrt as QEMU uses time functions from it.
>> 2) While I could get things compiling (with patches), QEMU would SEGV
>> almost immediately.
>>
>> Could you guys maybe give compiling QEMU w/libposix-aio a shot? I'm
>> really interested to see if it makes a difference.
>>
>> Regards,
>>
>> Anthony Liguori
>>
>>> [advertising] Keep an eye on the bullopensource website. [/advertising]
>>> :-P
>>>
>>> Regards,
>>> Laurent
>
> OK, I didn' have time to test the performance of the result, but you can find
> attached some patches to enable libposix-aio with kvm-14.
>
> first take last patches for linux-2.6.20 and libposix-aio-.0.8.2 from website :
>
> http://sourceforge.net/projects/paiol
>
> if you are using AMD64, you must patch libposix-aio because there is a little
> problem remaining to detect lio_submit syscall (first attachment)
>
> then apply following patch to kvm-14 (second attachment).
>
> It works fine on my system except when I use "-hda /dev/sdb" : qemu crashes just
> after mounting filesystems when "init" tries to set kernel parameters with
> "sysctl" (I use a debian 4.0). If I boot in emergency mode, mounting manually
> filesystems and running manually sysctl, all works fine. It looks like a
> synchronization problem.
>
> There are remaining issues : libposix-aio uses kernel AIO, so files must be
> opened using O_DIRECT and buffers must be aligned. libposix-aio is able to
> manage other cases but this has a performance cost.
>
> Aurélien, do you have any time to test this on your system ?

It took me some time to test it, I was not at home and I prefer to be
near the machine when I change the kernel!

I have just tried your patches, and I can say it works. I get the same
times (minor measurement issues) as when using kvm without your patches
and with taskset. Thanks a lot!

Would it be possible to merge the kvm part, and maybe to send it to the
qemu mailing list?

Regards,
Aurelien

--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' aurel32-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org | aurelien-rXXEIb44qovR7s880joybQ@public.gmane.org
`- people.debian.org/~aurel32 | www.aurel32.net