On 16-08-17 04:00 PM, John Fastabend wrote: > On 16-08-17 03:58 PM, Eric Dumazet wrote: >> On Wed, 2016-08-17 at 12:36 -0700, John Fastabend wrote: >>> Similar to how gso is handled skb_bad_tx needs to be per cpu to handle >>> lockless qdisc with multiple writer/producers. >> \ >>> @@ -1021,6 +1026,7 @@ err_out4: >>> free_percpu(sch->cpu_bstats); >>> free_percpu(sch->cpu_qstats); >>> free_percpu(sch->gso_cpu_skb); >>> + free_percpu(sch->skb_bad_txq_cpu); >> >> >> This might be the time to group all these per cpu allocations to a >> single one, to help data locality and decrease overhead of having XX >> pointers. >> >> >> > > Sounds like a good idea to me. I'll go ahead and add a patch to the > front to consolidate the stats and then add these there. >
Actually this turned out to be not so trivial. To do it reasonably requires changes in how gnet stats work and such. I'm going to propose pushing this into a series after the initial lockless set otherwise the patch set is going to start pushing 20+ patches. Also a follow on series to make all the qdiscs support per cpu stats would be nice and allows us to remove a lot of the annoying if/else cases around stats. Its a bit tedious to go and change all the qdiscs but mostly mechanical. .John