Hi,

The motivation behind the locking scheme in igb in friends is for a
very specific, userland-traffic-origin workload.

Sure, it may or may not work well for forwarding/filtering workloads.

If you want to fix it, let's have a discussion about how to do it,
followed by some patches to do so.




Adrian

On 11 May 2013 13:12, Hooman Fazaeli <hoomanfaza...@gmail.com> wrote:
> On 5/11/2013 8:26 PM, Barney Cordoba wrote:
>> Clearly you don't understand the problem. Your logic is that because other 
>> drivers are defective also; therefore its not a driver problem? The problem 
>> is caused by a multi-threaded driver that
>> haphazardly launches tasks and that doesn't manage the case that the rest of 
>> the system can't handle the load. It's no different than a driver that barfs 
>> when mbuf clusters are exhausted. The answer
>> isn't to increase memory or mbufs, even though that may alleviate the 
>> problem. The answer is to fix the driver, so that it doesn't crash the 
>> system for an event that is wholly predictable. igb has
>> 1) too many locks and 2) exasperates the problem by binding to cpus, which 
>> causes it to not only have to wait for the lock to free, but also for a 
>> specific cpu to become free. So it chugs along
>> happily until it encounters a bottleneck, at which point it quickly blows up 
>> the entire system in a domino effect. It needs to manage locks more 
>> efficiently, and also to detect when the backup is
>> unmanageable. Ever since FreeBSD 5 the answer has been "it's fixed in 7, or 
>> its fixed in 9, or it's fixed in 10". There will always be bottlenecks, and 
>> no driver should blow up the system no matter
>> what intermediate code may present a problem. Its the driver's 
>> responsibility to behave and to drop packets if necessary. BC
>
> And how the driver should behave? You suggest dropping the packets. Even if 
> we accept
> that dropping packets is a good strategy in all configurations (which I 
> doubt), the driver is
> definitely not the best place to implement it, since that involves 
> duplication of similar
> code between drivers. Somewhere like the Ethernet layer is a much better 
> choice to watch
> load of packets and drop them to prevent them to eat all the cores. 
> Furthermore, ignoring
> the fact that pf is not optimized for multi-processors and blaming drivers 
> for not adjusting
> themselves with the this pf's fault, is a bit unfair, I believe.
>
>
> --
>
> Best regards.
> Hooman Fazaeli
>
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to