Best practice for accepting TCP connections on multicore?

Adrian Chadd adrian at freebsd.org
Sat Jun 7 16:06:39 UTC 2014


On 7 June 2014 10:19, Igor Mozolevsky <igor at hybrid-lab.co.uk> wrote:
> On 7 June 2014 01:53, Dirk Engling <erdgeist at erdgeist.org> wrote:
>
>>
>> On Sat, 7 Jun 2014, Daniel Janzon wrote:
>>
>>  Is there any better way than doing the accept() call in one thread and
>>> then
>>> dispatch it to a thread on another core with any user space method?
>>>
>>
> See C10K problem [1].
>
>
> Why use accept() and not kevent()? You need to keep it portable?
>>
>
> Has anyone rebutted the threads better than events paper[2] yet?
>
>
>
> 1. http://www.kegel.com/c10k.html
>
> 2.
> https://www.usenix.org/legacy/events/hotos03/tech/full_papers/vonbehren/vonbehren.pdf

Not likely; but that paper talks about a threading model that isn't
currently in use in popular UNIX operating systems. It also compares a
lightweight thread implementation with a lightweight server to an
event driven system with worker threads that acted pretty badly,
causing extremely bad memory use and context switching.

We've all gotten better at programming since then.



-a


More information about the freebsd-hackers mailing list