On 24 Aug 2013, at 17:36, Alfred Perlstein wrote:

>> We should distinguish "lock contention" from "line contention". When 
>> acquiring a rwlock on multiple CPUs concurrently, the cache lines used to 
>> implement the lock are contended, as they must bounce between caches via the 
>> cache coherence protocol, also referred to as "contention".  In the if_lagg 
>> code, I assume that the read-only acquire of the rwlock (and perhaps now 
>> rmlock) is for data stability rather than mutual exclusion -- e.g., to allow 
>> processing to completion against a stable version of the lagg configuration. 
>> As such, indeed, there should be no lock contention unless a configuration 
>> update takes place, and any line contention is a property of the locking 
>> primitive rather than data model.
>> 
>> There are a number of other places in the kernel where migration to an 
>> rmlock makes sense -- however, some care must be taken for four reasons: (1) 
>> while read locks don't experience line contention, write locking becomes 
>> observably e.g., rmlocks might not be suitable for tcbinfo; (2) rmlocks, 
>> unlike rwlocks, more expensive so is not suitable for all rwlock line 
>> contention spots -- implement reader priority propagation, so you must 
>> reason about; and (3) historically, rmlocks have not fully implemented 
>> WITNESS so you may get less good debugging output.  if_lagg is a nice place 
>> to use rmlocks, as reconfigurations are very rare, and it's really all about 
>> long-term data stability.
> 
> Robert, what do you think about a quick swap of the ifnet structures to 
> counter before 10.x?

Could you be more specific about the proposal you're making?

Robert
_______________________________________________
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