Ingo Molnar wrote:
> * Avi Kivity <[EMAIL PROTECTED]> wrote:
>
>   
>>> It still exists in userspace.  Having the code duplication 
>>> (especially when it's not the same code base) is unfortunate.
>>>       
>> This remains true.
>>     
>
> but it's the wrong argument. Of course there's duplicate functionality, 
> and that's _good_ because it represents choice. KVM _itself_ is 
> duplicate functionality of qemu in a way. So why move the lapic/PIC 
> handling to the kernel? Because it's alot cleaner to do device emulation 
> there and PV drivers get significantly easier to do. The lapic/PIC code 
> should also be available in Qemu for OSs that dont have KVM-alike 
> support in the kernel.
>   

Duplicating code is never good, and duplicating code into the kernel 
(where maintenance cost is much higher) is bad.  There has to be a very 
good reason for it.  For the core kvm code, it is the 10x or more 
performance increase over qemu.  If we are to add *pic/pit to kvm, we 
need to find an advantage that offsets the disadvantages.  This can be a 
combination of simpler interfaces and better performance.

> and while today most of the performance advantages of moving the PIC 
> into the kernel are masked by the high cost of VM exits, in the future 
> the effect will be more marked, as the relative cost of piggybacking out 
> to qemu increases.
>   

That is correct, but we need to quantify it.  Assuming 3us per qemu exit 
overhead, 30,000 events per second per core give us a 10% overall 
overhead.  That's >100K events/sec for an entry-level server.

> I can see the value in doing certain things in Qemu, but i cannot see 
> _at all_ the value of handling say the PIT in Qemu. Just look at the 
> Qemu PIT/timers code quality in Qemu for a change ... it's a huge ugly 
> mess of lots of #ifdefs, ineffective handling of /dev/rtc, linear list 
> walking, signal overhead, etc., etc. 

Bad userspace code should be fixed, not rewritten as kernel code.

> All of that resulting in 10-15% of 
> 'idle' overhead of KVM+qemu when it runs a Linux guest. 

On my machines it's 0% overhead on idle (runlevel 3).


> On the other 
> side, in the kernel it's most natural to do timers and to emulate 
> hardware, because the kernel has _precise_ knowledge about the 
> platform's capabilities.
>   

That comes back to the kernel not exporting proper interfaces.  I think 
that's fixed now, with hrtimers tied to the userspace APIs?

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to