[ovs-dev] [dpif-netdev 05/15] dpif-netdev: Use new "ovsthread_counter" to track dp statistics.
Ben Pfaff
blp at nicira.com
Mon Dec 30 21:34:40 UTC 2013
On Mon, Dec 30, 2013 at 11:10:22AM -0800, Pravin Shelar wrote:
> On Mon, Dec 30, 2013 at 10:49 AM, Ben Pfaff <blp at nicira.com> wrote:
> > On Mon, Dec 30, 2013 at 10:40:13AM -0800, Pravin Shelar wrote:
> >> On Fri, Dec 27, 2013 at 8:03 PM, Ben Pfaff <blp at nicira.com> wrote:
> >> > ovsthread_counter is an abstract interface that could be implemented
> >> > different ways. The initial implementation is simple but less than
> >> > optimally efficient.
> >> >
> >> > Signed-off-by: Ben Pfaff <blp at nicira.com>
> >> > +void
> >> > +ovsthread_counter_inc(struct ovsthread_counter *c, unsigned long long int n)
> >> > +{
> >> > + c = &c[hash_int(ovsthread_id_self(), 0) % N_COUNTERS];
> >> > +
> >> Does it make sense optimize this locking so that threads running on
> >> same numa-node likely share lock?
> >> we can use process id hashing to achieve it easily.
> >
> > Yes, that makes a lot of sense. How do we do it?
> >
> Use processor id (sched_getcpu()) to hash it. In case of
> sched_getcpu() is not available then we can read thread affinity using
> sched_getaffinity() and return assigned CPU, in properly optimized
> environment we can assume that a thread wold be pinned to one cpu
> only. But I am not sure of doing on platforms other than linux.
That's reasonable.
But, on second thought, I am not sure of the benefit from threads on
the same node sharing a lock. I see that there are benefits from
threads on different nodes having different locks, but I'm not sure
that using only one lock on a single node really saves anything. What
do you think?
More information about the dev
mailing list