On Wed, Oct 8, 2014 at 1:50 AM, Lu, Yingqi <yingqi...@intel.com> wrote:
> Here is what I think. Currently (trunk version as well as my original patch),
>
> 1. Without SO_REUSEPORT or when available CPU number < 8, num_bucket = 1 
> anyway. It duplicates 1 listener and use that for this single bucket. If 
> folks think we should not duplicate in this case, I can modify the code to do 
> that.

Yes I think the duplication should be avoided.

But is one listener per bucket an interesting alternative to num_buckets = 1?

>
> 2. num_buckets is calculated = available_CPU_num/8. When available CPU is 
> less than 8, num_buckets = 1. It checks if SO_REUSEPORT is enabled in the 
> kernel. If yes, it will enable it. I guess that is opt-in? Maybe I 
> misunderstood you here, Yann. Please correct me if I do.

Why fixed 8, wouldn't one with less than 16 cores want the feature?

>
> 3. Yes, I did use some extern variables. I can change the name of them to 
> better coordinate with the variable naming conversion. We should do something 
> with ap_prefixed? Is there anything else I should consider when I rename the 
> variable?

Maybe defining new functions with more arguments (to be used by the
existing ones with NULL or default values) is a better alternative.

Please be aware that existing AP_DECLAREd functions API must not change though.

Regards,
Yann.

>
> Thanks,
> Yingqi
>
>
> -----Original Message-----
> From: Yann Ylavic [mailto:ylavic....@gmail.com]
> Sent: Tuesday, October 07, 2014 4:19 PM
> To: httpd
> Subject: Listeners buckets and duplication w/ and w/o SO_REUSEPORT on trunk
>
> Hi,
>
> some notes about the current implementation of this (trunk only).
>
> First, whether or not SO_REUSEPORT is available, we do duplicate the 
> listeners.
> This, I think, is not the intention of Yingqi Lu's original proposal, and 
> probably my fault since I asked for the patch to be splitted in two for a 
> better understanding (finally the SO_REUSEPORT patch only has been commited).
> The fact is that without SO_REUSEPORT, this serves nothing, and we'd better 
> use one listener per bucket (as originally proposed), or a single bucket with 
> no duplication (as before) if the performance gains do not worth it.
> WDYT?
>
> Also, there is no opt-in/out for this functionalities, nor a way to configure 
> number of buckets ratio wrt number of CPUs (cores).
> For example, SO_REUSEPORT also exists on *BSD, but I doubt it would work as 
> expected since IFAICT this not the same thing as in Linux (DragonFly's 
> implementation seems to be closed to Linux' one though).
> Yet, the dynamic setsockopt() check will also succeed on BSD, and the 
> functionality be enabled.
> So opt in (my preference) or out?
>
> Finally, some global variables (not even ap_ prefixed) are used to 
> communicate between listen.c and the MPM. This helps not breaking the API, 
> but this is trunk...
> I guess we can fix it, this is just a (self or anyone's) reminder :)
>
> Regards,
> Yann.

Reply via email to