On Oct 8, 2007, at 12:13 PM, Sam Lang wrote:

With mx, it looks like there's a limit on the number of connections from a peer (BMX_PEER_RX_NUM == 20). As new connections are received the idle connections are closed? Should bmi_method_addr_forget_callback be called from there?

Thanks,
-sam

Hi Sam,

The BMX_PEER_RX_NUM simply sets the number of unexpected requests to pre-allocate when a new peer is registered. This the calls to malloc () for unexpected messages up to this threshold. It does not control re-connect attempts.

In bmi_mx, a peer is only registered once. If any communication fails, the connection state is marked BMX_PEER_DISCONNECT. It does not delete the peer unless BMI_set_info(DROP_ADDR) is called.

When a client reconnects, the server cancels any pending requests from the peer, calls mx_iconnect() to establish a new connect back to the client, and then sends a CONN_ACK message. After that, communication resumes.

If a connection is idle, bmi_mx (and MX) will happily leave it open as long as the process is alive.

I am not sure what you are proposing that bmi_method_addr_forget_callback() do.

By the way, there is a limit in bmi_mx to the number of known peers which is currently set at 2^20. Having a high value of peers (active and/or idle) should not cause any slow-down issues in bmi_mx. Each incoming message (expected or unexpected) includes the source endpoint address and MX has a function that allows you to register a context with each endpoint address. bmi_mx uses this to associate the peer's data structure with the peer's endpoint. So for even unexpected messages, it is a O(1) lookup.

Scott
_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to