Re: reduce networking latency

2014-10-22 Thread Michael S. Tsirkin
On Wed, Oct 22, 2014 at 04:35:07PM -0400, David Xu wrote:
> 2014-10-15 14:30 GMT-04:00 David Xu :
> > 2014-09-29 5:04 GMT-04:00 Michael S. Tsirkin :
> >> On Wed, Sep 24, 2014 at 02:40:53PM -0400, David Xu wrote:
> >>> Hi Michael,
> >>>
> >>> I found this interesting project from KVM TODO website:
> >>>
> >>> allow handling short packets from softirq or VCPU context
> >>>  Plan:
> >>>We are going through the scheduler 3 times
> >>>(could be up to 5 if softirqd is involved)
> >>>Consider RX: host irq -> io thread -> VCPU thread ->
> >>>guest irq -> guest thread.
> >>>This adds a lot of latency.
> >>>We can cut it by some 1.5x if we do a bit of work
> >>>either in the VCPU or softirq context.
> >>>  Testing: netperf TCP RR - should be improved drastically
> >>>   netperf TCP STREAM guest to host - no regression
> >>>
> >>> Would you mind saying more about the work either in the vCPU or
> >>> softirq context?
> >>
> >> For TX, we might be able to execute it directly from VCPU context.
> >> For RX, from softirq context.
> >>
> 
> Do you mean for RX, we directly put data to a shared buffer accessed
> by guest VM bypassing the IO thread? For TX, in vCPU context network
> data is added to the shared buffer and kick host IRQ to send them?

Yes, that's the idea.

> >>> Why it is only for short packets handling?
> >>
> >> That's just one idea to avoid doing too much work like this.
> >>
> >> Doing too much work in VCPU context would break pipelining,
> >> likely degrading stream performance.
> >> Work in softirq context is not accounted against the correct
> >> cgroups, doing a lot of work there will mean guest can steal
> >> CPU from other guests.
> >>
> >>> Thanks a
> >>> lot!
> >>>
> >>>
> >>> Regards,
> >>>
> >>> Cong
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: reduce networking latency

2014-10-22 Thread David Xu
2014-10-15 14:30 GMT-04:00 David Xu :
> 2014-09-29 5:04 GMT-04:00 Michael S. Tsirkin :
>> On Wed, Sep 24, 2014 at 02:40:53PM -0400, David Xu wrote:
>>> Hi Michael,
>>>
>>> I found this interesting project from KVM TODO website:
>>>
>>> allow handling short packets from softirq or VCPU context
>>>  Plan:
>>>We are going through the scheduler 3 times
>>>(could be up to 5 if softirqd is involved)
>>>Consider RX: host irq -> io thread -> VCPU thread ->
>>>guest irq -> guest thread.
>>>This adds a lot of latency.
>>>We can cut it by some 1.5x if we do a bit of work
>>>either in the VCPU or softirq context.
>>>  Testing: netperf TCP RR - should be improved drastically
>>>   netperf TCP STREAM guest to host - no regression
>>>
>>> Would you mind saying more about the work either in the vCPU or
>>> softirq context?
>>
>> For TX, we might be able to execute it directly from VCPU context.
>> For RX, from softirq context.
>>

Do you mean for RX, we directly put data to a shared buffer accessed
by guest VM bypassing the IO thread? For TX, in vCPU context network
data is added to the shared buffer and kick host IRQ to send them?

>>> Why it is only for short packets handling?
>>
>> That's just one idea to avoid doing too much work like this.
>>
>> Doing too much work in VCPU context would break pipelining,
>> likely degrading stream performance.
>> Work in softirq context is not accounted against the correct
>> cgroups, doing a lot of work there will mean guest can steal
>> CPU from other guests.
>>
>>> Thanks a
>>> lot!
>>>
>>>
>>> Regards,
>>>
>>> Cong
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: reduce networking latency

2014-10-15 Thread David Xu
2014-09-29 5:04 GMT-04:00 Michael S. Tsirkin :
> On Wed, Sep 24, 2014 at 02:40:53PM -0400, David Xu wrote:
>> Hi Michael,
>>
>> I found this interesting project from KVM TODO website:
>>
>> allow handling short packets from softirq or VCPU context
>>  Plan:
>>We are going through the scheduler 3 times
>>(could be up to 5 if softirqd is involved)
>>Consider RX: host irq -> io thread -> VCPU thread ->
>>guest irq -> guest thread.
>>This adds a lot of latency.
>>We can cut it by some 1.5x if we do a bit of work
>>either in the VCPU or softirq context.
>>  Testing: netperf TCP RR - should be improved drastically
>>   netperf TCP STREAM guest to host - no regression
>>
>> Would you mind saying more about the work either in the vCPU or
>> softirq context?
>
> For TX, we might be able to execute it directly from VCPU context.
> For RX, from softirq context.
>

Which step is removed for TX and RX compared with vanilla? Or what's
the new path?

TX: guest thread-> host irq?
TX: host irq-> ?

Thanks.

>> Why it is only for short packets handling?
>
> That's just one idea to avoid doing too much work like this.
>
> Doing too much work in VCPU context would break pipelining,
> likely degrading stream performance.
> Work in softirq context is not accounted against the correct
> cgroups, doing a lot of work there will mean guest can steal
> CPU from other guests.
>
>> Thanks a
>> lot!
>>
>>
>> Regards,
>>
>> Cong
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: reduce networking latency

2014-09-29 Thread Michael S. Tsirkin
On Wed, Sep 24, 2014 at 02:40:53PM -0400, David Xu wrote:
> Hi Michael,
> 
> I found this interesting project from KVM TODO website:
> 
> allow handling short packets from softirq or VCPU context
>  Plan:
>We are going through the scheduler 3 times
>(could be up to 5 if softirqd is involved)
>Consider RX: host irq -> io thread -> VCPU thread ->
>guest irq -> guest thread.
>This adds a lot of latency.
>We can cut it by some 1.5x if we do a bit of work
>either in the VCPU or softirq context.
>  Testing: netperf TCP RR - should be improved drastically
>   netperf TCP STREAM guest to host - no regression
> 
> Would you mind saying more about the work either in the vCPU or
> softirq context?

For TX, we might be able to execute it directly from VCPU context.
For RX, from softirq context.

> Why it is only for short packets handling?

That's just one idea to avoid doing too much work like this.

Doing too much work in VCPU context would break pipelining,
likely degrading stream performance.
Work in softirq context is not accounted against the correct
cgroups, doing a lot of work there will mean guest can steal
CPU from other guests.

> Thanks a
> lot!
> 
> 
> Regards,
> 
> Cong
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


reduce networking latency

2014-09-24 Thread David Xu
Hi Michael,

I found this interesting project from KVM TODO website:

allow handling short packets from softirq or VCPU context
 Plan:
   We are going through the scheduler 3 times
   (could be up to 5 if softirqd is involved)
   Consider RX: host irq -> io thread -> VCPU thread ->
   guest irq -> guest thread.
   This adds a lot of latency.
   We can cut it by some 1.5x if we do a bit of work
   either in the VCPU or softirq context.
 Testing: netperf TCP RR - should be improved drastically
  netperf TCP STREAM guest to host - no regression

Would you mind saying more about the work either in the vCPU or
softirq context? Why it is only for short packets handling? Thanks a
lot!


Regards,

Cong
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


reduce networking latency

2014-06-10 Thread David Xu
Hi All,

I found this interesting project from KVM TODO website:

allow handling short packets from softirq or VCPU context
 Plan:
   We are going through the scheduler 3 times
   (could be up to 5 if softirqd is involved)
   Consider RX: host irq -> io thread -> VCPU thread ->
   guest irq -> guest thread.
   This adds a lot of latency.
   We can cut it by some 1.5x if we do a bit of work
   either in the VCPU or softirq context.
 Testing: netperf TCP RR - should be improved drastically
  netperf TCP STREAM guest to host - no regression
 Developer: MST

 I am also tuning the vCPU scheduling of KVM. If someone would like to
say some details about the work either in the vCPU or softirq context,
I will be very appreciated. BTW, how to get the evaluation results
that the shortcut can improve the performance by up to 1.5X?
Thanks a lot!

Regards,
Cong
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html