Re: Fast Accept

2012-01-23 Thread Alan M. Carroll
Monday, January 23, 2012, 12:19:00 PM, you wrote: > The key question is "why is the test failing", and AFAICT it looks like > NetAccept::init_accept() isn't doing: > PollDescriptor *pd = get_PollDescriptor(t); > if (a->ep.start(pd, a, EVENTIO_READ) < 0) > link in init_accept_per_thread(

Re: Fast Accept

2012-01-23 Thread Igor Galić
- Original Message - > I think if we switch to fine-grained locking and away from > large-grained > try-locks we could deal with the latency issue and get the most out > of the > accept thread since we could synchronise between the accept and net > threads > faster. This is likely to be e

Re: Fast Accept

2012-01-23 Thread John Plevyak
I think if we switch to fine-grained locking and away from large-grained try-locks we could deal with the latency issue and get the most out of the accept thread since we could synchronise between the accept and net threads faster. This is likely to be easier with a simplified codebase as well. On

Re: Fast Accept

2012-01-23 Thread Leif Hedstrom
On 1/23/12 11:21 AM, Theo Schlossnagle wrote: On Linux, FreeBSD and Solaris (at least), even with the most recent nonblocking kernel facilities, it is still faster to accept new TCP connections in a blocking fashion via thread pool. FWIW. That definitely was the case when we worked on Accept

Re: Fast Accept

2012-01-23 Thread Leif Hedstrom
On 1/23/12 11:21 AM, Theo Schlossnagle wrote: On Linux, FreeBSD and Solaris (at least), even with the most recent nonblocking kernel facilities, it is still faster to accept new TCP connections in a blocking fashion via thread pool. FWIW. That definitely was the case when we worked on Accept

Re: Fast Accept

2012-01-23 Thread Theo Schlossnagle
7;false' again will break accept_internal() as it was intended to work, >>>> no ? >>>> >>> accept_internal should be unaffected by the default. I think it was >>> intended to check the value and do something based on it. Otherwise there >>> should not

Re: Fast Accept

2012-01-23 Thread John Plevyak
>>> no ? >>> >> accept_internal should be unaffected by the default. I think it was >> intended to check the value and do something based on it. Otherwise there >> should not even be an option to check. >> >> The question is what the callers sh

Re: Fast Accept

2012-01-23 Thread Leif Hedstrom
therwise there should not even be an option to check. The question is what the callers should do. I can try tweaking TSNetAccept to turn off frequent_accept, which is original (2.1.6) behavior (although that seems to make mock of the accept_threads parameter). We're still left with the ques

Re: Fast Accept

2012-01-23 Thread Alan M. Carroll
is what the callers should do. I can try tweaking TSNetAccept to turn off frequent_accept, which is original (2.1.6) behavior (although that seems to make mock of the accept_threads parameter). We're still left with the question of why my code fails regression with fast accept.

Re: Fast Accept

2012-01-22 Thread Leif Hedstrom
On 1/22/12 7:13 PM, Leif Hedstrom wrote: Still watching the game at In The Zone, but, with your patch, does it still support both accept threads (1 or more) and non-blocking accept on each net-thread ? So, looking at some older code, v2.1.6 for example, where we passed around frequent_accep

Re: Fast Accept

2012-01-22 Thread Leif Hedstrom
Still watching the game at In The Zone, but, with your patch, does it still support both accept threads (1 or more) and non-blocking accept on each net-thread ? On Jan 22, 2012, at 5:42 PM, "Alan M. Carroll" wrote: > I could be wrong. It happened once before, so why not twice? > > Sunday, Ja

Re: Fast Accept

2012-01-22 Thread Alan M. Carroll
I could be wrong. It happened once before, so why not twice? Sunday, January 22, 2012, 6:10:04 PM, you wrote: > Hmmm, I'll have to go read the code again, after the 49ers game. That is not > how I remember it at all.

Re: Fast Accept

2012-01-22 Thread Leif Hedstrom
Hmmm, I'll have to go read the code again, after the 49ers game. That is not how I remember it at all. On Jan 22, 2012, at 4:36 PM, "Alan M. Carroll" wrote: > Sunday, January 22, 2012, 4:28:27 PM, you wrote: > >> Hmmm, this sounds awefully familiar, I think we had this exact problem once >>

Re: Fast Accept

2012-01-22 Thread Alan M. Carroll
Sunday, January 22, 2012, 5:36:23 PM, you wrote: > As for accept threads, my reading of the code is that if frequent_accept is > false, then every normal IO thread also does accepts (via > NetAccept::init_accept_per_thread). No, that's wrong. It calls NetAccept::init_accept and starts a single

Re: Fast Accept

2012-01-22 Thread Alan M. Carroll
Sunday, January 22, 2012, 4:28:27 PM, you wrote: > Hmmm, this sounds awefully familiar, I think we had this exact problem once > before as well, and I changed it back to "true" as it used to be. Define "used to be". I specifically checked the 2.1.7 codebase and AFAICT it used false in all "real

Re: Fast Accept

2012-01-22 Thread Leif Hedstrom
2) Should we just get rid of the fast accept path if it is only used in examples and testing? I'm a little confused I think. Looking at the code, frequent_accept also enables accept threads, and accept per thread. Unless I'm totally wrong, I think we should get rid of this "

Fast Accept

2012-01-22 Thread Alan M. Carroll
live testing. I don't know why I haven't seen this effect before, as the default change was almost 5 months ago. 1) Is there any evidence that the default for frequent_accept (that is, use fastAccept) should remain true instead of false (do not use)? 2) Should we just get rid of the f