Keir,
This patch is for comments, and it is based on IPF, it may not apply to IA32
side.
This patch delivers interrupt and IO finish in the same hypercall
xc_hvm_set_irq_and_wakeup_cpu,
This eliminate all unnecessary hypercalls.
In the meantime, I add a mechanism for IDE DMA thread to wakeup qemu main
block(select) to
Deliver IDE DMA interrupt.
Yes all this can improve KB performance greatly,
But KB is still incurring 2%~3% degradation compared to shared PIC irq line.
I guest the reason as following,
In shared PIC irq line method,
IDE DMA thread doesn't wake up Qemu thread, after it has set irq line,
Select is only back when there is IO operation or other interrupt like
keyborad, mouse.
This is not likely to delay the IDE interrupt deliverring, because every time
xen returns to guest OS,
It will sync share irq line, and IDE interrupt can be delivered without dom0
waking up hvm domain.
There is no xc_evtchn_notify called due to IDE DMA interrupt deliver.
But In currently hypercall method,
There are many hypercalls called due to IDE DMA interrupt deliver.
So there are still 2%~3% performance degradation.
What's your opinion?
Thanks,
Anthony
Xu, Anthony write on 2006年11月24日 10:00:
> Keir Fraser write on 2006年11月22日 18:28:
>> On 22/11/06 10:23, "Xu, Anthony" <anthony.xu@xxxxxxxxx> wrote:
>>
>> Since the threads run independently there seems little choice but for
>> each to be able to flush. If the IDE DMA support had been properly
>> integrated into the qemu select() event loop this would not be an
>> issue.
>
> Hi keir,
>
> I'm trying to use multi hypercall to resolve this issue.
> But I found it is difficult to use multi hypercall in qemu.
> Because a hypercall have different argument in qemu, libxc and dom0
> kernel.
>
> For example,
> In qemu,
> xc_evtchn_notify(xce_handle, ioreq_local_port[send_vcpu]);
> In libxc
> ioctl(xce_handle, IOCTL_EVTCHN_NOTIFY, ¬ify);
> In dom0 kernel
> HYPERVISOR_event_channel_op(EVTCHNOP_send, &send);
>
> If we want to use multi hypercall in qemu, we need to get the
> interface information
> of dom0 kernel. We may need to add several more hypercall.
>
> I propose to change xc_hvm_set_irq_level functionality to deliver
> interrupt and wakeup cpu at the same time.
> For example,
> xc_hvm_set_irq_and_wakeup_cpu(int xc_handle, domid_t dom, int irq,
> int level, int cpu) This hypercall will deliver interrupt irq and
> wake up cpu.
>
> What's your opinion?
>
>
> Thanks,
> Anthony
>
>
>
>
>
>
>
>>
>> -- Keir
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
qemu_interrupt_deliver200611241336.patch
Description: qemu_interrupt_deliver200611241336.patch
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|