[ovs-dev] [PATCH] datpath: Avoid reporting half updated statistics.

Jesse Gross jesse at nicira.com
Sat Aug 21 03:34:42 UTC 2010


On Fri, Aug 20, 2010 at 11:21 PM, Ben Pfaff <blp at nicira.com> wrote:
> On Fri, Aug 20, 2010 at 7:46 PM, Jesse Gross <jesse at nicira.com> wrote:
>> We enforce mutual exclusion when updating statistics by disabling
>> bottom halves and only writing to per-CPU state.  However, reading
>> requires looking at the statistics for foreign CPUs, which could be
>> in the process of updating them since there isn't a lock.  This means
>> we could get garbage values for 64-bit values on 32-bit machines or
>> byte counts that don't correspond to packet counts, etc.
>>
>> This commit introduces a sequence lock for statistics values to avoid
>> this problem.  Getting a write lock is very cheap - it only requires
>> incrementing a counter plus a memory barrier (which is compiled away
>> on x86) to acquire or release the lock and will never block.  On
>> read we spin until the sequence number hasn't changed in the middle
>> of the operation, indicating that the we have a consistent set of
>> values.
>
> It looks good to me.
>

Thanks I pushed it out.




More information about the dev mailing list