-
-
Notifications
You must be signed in to change notification settings - Fork 498
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
POSIX pollqs should scale horizontally #530
Comments
Are there any plans for this feature? One pollq thread is not enough to leverage line rate. |
It should not be hard to do. Just haven’t got around to it. |
Which platform do you need this for ? |
There is quite a lot of evidence that this wasn't the main performance limiter. I'm moving this to 1.5. (Other issues, like the aio lock being highly contended, were a higher priority.) |
So I have recently been in this code, and while i don't really want to do this for the select poller, the other pollers can do it pretty much nearly trivially. The epoll() one is probably the highest priority, followed by kqueue(). |
This should help Linux platforms scale even further with NNG. Port events and *maybe* poll are the last to do. Probably select will remain left in the cold, because honestly select based systems are already performance constrained.
Right now we are using only a single thread for POSIX based pollqs.
There are some reasons for this, not the last of which is that event removal is difficult to coordinate across different threads. But we can either scale to multiple pollqs (based on nni_plat_ncpu), or examine the opportunity to scale a single pollq to multiple threads.
Specially the poll based poller (which nobody uses) should expand to multiple threads trivially. The others will be easier or harder depending on how we can synchronize them.
The text was updated successfully, but these errors were encountered: