Thanks Ben, as it turns out, the thread synch problem was not what was
causing the low packet arrival rate. It was buffer allocation mechanisms,
which I fixed in my netdev provider and that resolved it. OVS is working
fine now.

On Wed, Sep 11, 2013 at 10:12 PM, Ben Pfaff <b...@nicira.com> wrote:

> On Wed, Sep 11, 2013 at 06:41:40PM +0500, Junaid Rao wrote:
> > I have developed a custom netdev provider and running OVS-1.10.0 in
> > userspace mode. it works fine but the packet processing rate is quite
> slow.
> > Packet transmission rate is about 500packets/sec but OVS is only able to
> > forward 1/5th of this.
>
> Sounds very slow.  Even userspace OVS should be much faster than this.
>
> > The arrival of incoming packet at the switch is indicated by a call back
> > function, and this call back works fine for the actual packet
> transmission
> > rate i.e. 500p/s.
> >
> > What I understand is the problem in use of poll_block() which is called
> in
> > the main loop. Currently I use poll_immediate_wake to signal the polling
> > thread to stop as soon as a packet is received in my call back function,
> > however I see that multiple packets arrive before a single packet is
> > received by the netdev-provider.
>
> It sounds like you have a thread separate from the main thread doing
> packet handling.  That's fine, but you have to understand that each
> thread has its own poll_loop, so that calling poll_immediate_wake() in
> one thread does not affect other threads in any way.
>
> You might want to look at lib/seq.[ch] for another way to wake up the
> main thread when packets are received.
>



-- 
*Junaid Zulfiqar*
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to