[dpdk-dev] Load-balancing position field in DPDK load_balancer sample app vs. Hash table

Bruce Richardson bruce.richardson at intel.com
Fri Nov 14 11:53:25 CET 2014


On Thu, Nov 13, 2014 at 01:29:32PM -0500, Kamraan Nasim wrote:
> Hello,
> 
> So i've borrowed some code from the DPDK Load balancer sample application,
> specifically the load balancing position(byte 29th) to determine which
> worker lcore to forward the packet to.
> 
> The idea is that flow affinity should be maintained and all packets from
> the same flow would have the same checksum/5-tuple value
> 
> worker_id = packet[load_balancing_field] % n_workers
> 
> Question is that how reliable is this load balancing position? I am tempted
> to use Hash tables but I think this position based mechanism may be faster.
> 
> How have people's experience with this been in general?
>

Using a modulus "%" operation will be far, far faster than doing a hash table
lookup, though obviously it is not as flexible. [If you have a power-of-two
number of workers, you can replace the "%" by "&", if you like to shave off
another few cycles].
As for reliability, I'm afraid it depends entirely on your application and what
field you pick as to whether it works for load balancing or not. 

/Bruce


More information about the dev mailing list