Daniel P. Berrangé <[email protected]> wrote:
> On Wed, Aug 14, 2019 at 04:02:18AM +0200, Juan Quintela wrote:
>> When we have lots of channels, sometimes multifd migration fails
>> with the following error:
>> 
>> Any good ideas?
>
> In inet_listen_saddr() we call
>
>     if (!listen(slisten, 1)) {
>
> note the second parameter sets the socket backlog, which is the max
> number of pending socket connections we allow. My guess is that the
> target QEMU is not accepting incoming connections quickly enough and
> thus you hit the limit & the kernel starts dropping the incoming
> connections.
>
> As a quick test, just hack this code to pass a value of 100 and see
> if it makes your test reliable. If it does, then we'll need to figure
> out a nice way to handle backlog instead of hardcoding it at 1.

Nice.

With this change I can create 100 channels on a 4 core machine without
any trouble (5 tries so far).  Previously with 10 channels on the same
machine failed around 50% of the time, and 100 channels failed 100% of
the time.

How can we proceed from here?

Thanks, Juan.

Reply via email to