RFC: bus_get_cpus(9)

Slawa Olhovchenkov slw at zxy.spb.ru
Thu Feb 19 17:58:05 UTC 2015


On Thu, Feb 19, 2015 at 10:37:28AM -0500, John Baldwin wrote:

> There's nothing preventing the RSS code from calling bus_get_cpus() internally 
> to populate the info it returns in its APIs.
> 
> That is, I imagine something like:
> 
> #ifdef RSS
> 	queue_info = fetch_rss_info(dev);
> 	for (queue in queue_info) {
> 		create queue for CPU queue->cpu
> 	}
> #else
> 	/* Use bus_get_cpus directly and do 1:1 */
> #endif
> 
> That is, I think RSS should provide a layer on top of new-bus, not be a 
> bus_foo API.  At some point all drivers might only have the #ifdef RSS case 
> and not use bus_get_cpus() directly at all, but it doesn't seem like the RSS 
> API is quite there yet.

I don't play with RSS (and RSS descrption wery complexity for me,
besides I think RSS API may be very simple (for listen socket case) --
just inform select/kevent/poll only pined to cpu handled interrupt),
but for RSS may be need use all cores -- and NUMA near and NUMA far,
for RSS-less case for interrupt best use only NUME near cores, leave
NUMA far cores for application (this separation in my case give aprox.
100% performance rise).


More information about the freebsd-arch mailing list