It seems that email that I send to Tao YunXiang bounces; at least, this one did. I hope that he sees my previous email via the list.
----- Forwarded message from Mail Delivery System <mailer-dae...@relay12.mail.gandi.net> ----- Date: Tue, 11 May 2021 20:00:42 +0000 (UTC) From: Mail Delivery System <mailer-dae...@relay12.mail.gandi.net> To: b...@ovn.org Subject: Undelivered Mail Returned to Sender Message-Id: <20210511200042.99d1f200...@relay12.mail.gandi.net> This is the mail system at host relay12.mail.gandi.net. I'm sorry to have to inform you that your message could not be delivered to one or more recipients. It's attached below. For further assistance, please send mail to postmaster. If you do so, please include this problem report. You can delete your own text from the attached returned message. The mail system <taoyunxi...@cmss.chinamobile.com>: host mx.cmss.chinamobile.com[221.176.66.77] said: 550 2eec609ae26442b-87c46 Mail rejected (in reply to end of DATA command) Reporting-MTA: dns; relay12.mail.gandi.net X-Postfix-Queue-ID: E4E0E200006 X-Postfix-Sender: rfc822; b...@ovn.org Arrival-Date: Tue, 11 May 2021 20:00:34 +0000 (UTC) Final-Recipient: rfc822; taoyunxi...@cmss.chinamobile.com Original-Recipient: rfc822;taoyunxi...@cmss.chinamobile.com Action: failed Status: 5.0.0 Remote-MTA: dns; mx.cmss.chinamobile.com Diagnostic-Code: smtp; 550 2eec609ae26442b-87c46 Mail rejected Date: Tue, 11 May 2021 13:00:30 -0700 From: Ben Pfaff <b...@ovn.org> To: Tao YunXiang <taoyunxi...@cmss.chinamobile.com> Cc: d...@openvswitch.org Subject: Re: [ovs-dev] [PATCH] ofproto-dpif-upcall: Improve concurrency by adjust flow-limit Message-ID: <yjrixgzg+dm7b...@ovn.org> On Tue, May 11, 2021 at 03:52:00PM +0800, Tao YunXiang wrote: > Author: Tao YunXiang <taoyunxi...@cmss.chinamobile.com> You don't need an Author: tag because Git stores the author in a separate field. > + /* Use duration as a reference, adjust the number of flow_limit, > + * when the duration is small, increase the flow-limit, and vice > versa */ > + if (duration >= 1000) { > flow_limit /= duration / 1000; > - } else if (duration > 1300) { > - flow_limit = flow_limit * 3 / 4; > - } else if (duration < 1000 && > - flow_limit < n_flows * 1000 / duration) { > - flow_limit += 1000; > + } else { > + flow_limit *= 1000 / duration; > } > flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000)); > atomic_store_relaxed(&udpif->flow_limit, flow_limit); The above is very abrupt. It always tries to adjust the flow limit upward or downward. I think that this is a bad idea, especially in the upward direction. If there are only a few flows, which only take a few milliseconds to revalidate, then it will keep increasing the flow limit upward until it overflows the range of unsigned int. It will happen very quickly, in fact: if duration is 1 ms three times in a row, then we will multiply flow_limit by 1,000,000,000 and overflow 32-bit UINT_MAX; if it happens six times in a row, we will overflow 64-bit. Furthermore, it doesn't work well even if we have longer durations. If revalidation takes 501 ms, then we can adjust the flow_limit upward, but this won't do it. On the downward direction, this new code does nothing if the duration is less than 2 seconds. We want to aim for 1-second revalidation times. I don't think that this approach has been thought through very well. ----- End forwarded message ----- _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev