qemu-discuss
[Top][All Lists]
Advanced

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

Re: [Qemu-discuss] Guest bandwidth setting


From: Pradeep Kiruvale
Subject: Re: [Qemu-discuss] Guest bandwidth setting
Date: Mon, 31 Mar 2014 02:55:18 +0200

Hi Robert,

 Thanks for your detailed reply.

 If I want to use the leaky bucket,the packet sizes should also be equal right, otherwise how  I can achieve the uniform bandwidth.
For that at least I have to fragment the packets right.

 Suppose if I set bandwidth to 100MB and if one packet is bigger than that,how can I do that?

 Is my understanding is correct or am I missing something.

Regards,
Pradeep


On 31 March 2014 02:30, Robert N <address@hidden> wrote:
As for 'real-world' traffic shaping, there are various options, such as the disk block i/o queuing 
http://www.linux-kvm.org/wiki/images/7/72/2011-forum-keep-a-limit-on-it-io-throttling-in-qemu.pdf / http://wiki.qemu.org/Features/DiskIOLimits/Requirements

But I personally do not know of a pre-existing throttling method for network i/o within QEMU (maybe someone else does?) and have always used pre-existing 'standard' methods for network traffic shaping for bad guest prevention, WAN testing (i.e. point to point microwave link simulation), application performance evaluation, VoIP jitter, etc... NetEM is a fairly simple 'proxy' to setup and then you can define the throughput of the ingress and egress adapters:
*> tc qdisc replace dev eth0 root handle 1:0 tbf rate 2.5Mbit burst 2048 latency 0ms
*> tc qdisc replace dev eth1 root handle 2:0 tbf rate 128kbit burst 2048 latency 0ms
But there are plenty of other traffic shaping options (open-source and not) under Windows/OS-X and Linux.

You can also use Virtio devices within QEMU and apply shaping at the physical level using standard hardware.

As far as sub-dividing packets, that is the wrong approach to take as you can not apply time scaling to network traffic unless you control both sides and can re-assembly the packets into it's original. You could do TCP rate control and dynamically change the TCP window size and delayed ACK responses. 

But if I wanted to mod qemu to provide this feature, using the 'leaky' or 'token' bucket transmission methods would be my preferred way and I'd would just take one of the NIC emulations like ne2000.c as the base of a new NIC for qemu and add leaky bucket queuing (http://en.wikipedia.org/wiki/Leaky_bucket#Uses_2) to define a fixed bandwidth rate. That could be done in a hour or two. I.e. pcnet.c has simple _receive and _transmit functions and existing polling and poll delay routines that would be a natural fit for queuing.

-R

________________________________
> Date: Sun, 30 Mar 2014 14:38:37 +0200
> From: address@hidden
> To: address@hidden
> Subject: [Qemu-discuss] Guest bandwidth setting
>
> Hi All,
>
> I am new to QEMU.
>
> I am implementing some functionality where in I need to set the
> bandwidth control for my guest vms.Please let me know how can I do it.
>
> I am looking into net/net.c file,I dint find any leads.I tried two ways.
>
> I am trying to find how to set virtual nics(in my case e1000) speed,I
> did not find any ways to do that.
>
> If I devide the packet into smaller packets in qemu_deliver_packet()
> function
> I am not able to transfer the other half of the packet.
>
> Please let me know how can I resolve this.
>
> Thanks in advance                                      


reply via email to

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