From: Eric Dumazet <eric.duma...@gmail.com> Date: Fri, 19 Aug 2016 12:56:56 -0700
> On Fri, 2016-08-19 at 16:47 -0300, Thadeu Lima de Souza Cascardo wrote: >> Instead of using flow stats per NUMA node, use it per CPU. When using >> megaflows, the stats lock can be a bottleneck in scalability. > > ... > >> >> flow_cache = kmem_cache_create("sw_flow", sizeof(struct sw_flow) >> - + (nr_node_ids >> + + (num_possible_cpus() >> * sizeof(struct flow_stats *)), >> 0, 0, NULL); >> if (flow_cache == NULL) > > This is bogus. > > Please use nr_cpu_ids instead of num_possible_cpus(). Then how would hot-plugged cpus be handled properly? The only other way is you'd have to free all objects in the current flow_cache, destroy it, then make a new kmem_cache and reallocate all of the existing objects and hook them back up every time a cpu up event occurs. That doesn't make any sense at all. Therefore, the size of the objects coming out of "sw_flow" have to accomodate all possible cpu indexes. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev