Thanks for your quick answer, Willy.

That's a shame to hear but makes sense. We'll try out some ideas for
reducing contention. We don't use cpu-map with nbthread; I considered it
best to let the kernel take care of this, especially since there are
some other processes on that box. I don't really want to fall back to
nbproc but we may have to, at least until we get the number of reloads down.


On 1/12/18 8:55 AM, Willy Tarreau wrote:
> Hi Samuel,
>
> On Thu, Jan 11, 2018 at 08:29:15PM -0600, Samuel Reed wrote:
>> Is there a regression in the 1.8 series with SO_REUSEPORT and nbthread
>> (we didn't see this before with nbproc) or somewhere we should start
>> looking?
> In fact no, nbthread is simply new so it's not a regression but we're
> starting to see some side effects. One possibility I can easily imagine
> is that at most places we're using spinlocks because the locks are very
> short-lived and very small, so they have to be cheap. One limit of
> spinlocks is that it's mandatory that you don't have more threads than
> cores so that your threads are never scheduled out with a lock held, to
> let another one spin for nothing for a timeslice.
>
> The reload makes an interesting case because if you use cpumap to bind
> your threads to CPU cores, during the soft-stop period, they do have to
> coexist on the same cores and a thread of one process disturbs the thread
> of another process by stealing its CPU regularly.
>
> I can't say I'm seeing any easy solution to this in the short term, that's
> something we have to add to the list of things to improve in the future.
> Maybe something as simple as starting with SCHED_FIFO to prevent threads
> from being preempted outside of the poll loop, and dropping it upon reload
> could help a lot, but that's just speculation.
>
> We'll have to continue to think about this I guess. It may be possible
> that if your old processes last very long you'd continue to get a better
> experience using nbproc than nbthread :-/
>
> Willy


Reply via email to