]> git.proxmox.com Git - mirror_corosync.git/commitdiff
Add scalability to 128 nodes by adding new parameter to protocol which is
authorSteven Dake <sdake@redhat.com>
Wed, 16 Aug 2006 04:25:47 +0000 (04:25 +0000)
committerSteven Dake <sdake@redhat.com>
Wed, 16 Aug 2006 04:25:47 +0000 (04:25 +0000)
a random timeout bounded by a configuration parameter when sending join
messages.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1214 fd59a12c-fef9-0310-b244-a6a79926bd2f

exec/totem.h
exec/totemconfig.c
exec/totemsrp.c
man/openais.conf.5

index cca5c1c2eec482bb0a359f97e3e8e547e8b65ef3..dc19fe5b0650a1791075f3b7802727017fb30db8 100644 (file)
@@ -111,6 +111,8 @@ struct totem_config {
 
        unsigned int join_timeout;
 
+       unsigned int send_join_timeout;
+
        unsigned int consensus_timeout;
 
        unsigned int merge_timeout;
index c40c31d96e9edab7155501a959c11e0d236f05bc..d68e617d22bf13f3c7e36332f90c60112eb653df 100644 (file)
@@ -190,6 +190,7 @@ extern int totem_config_read (
                objdb_get_int (objdb,object_totem_handle, "token_retransmits_before_loss_const", &totem_config->token_retransmits_before_loss_const);
 
                objdb_get_int (objdb,object_totem_handle, "join", &totem_config->join_timeout);
+               objdb_get_int (objdb,object_totem_handle, "send_join", &totem_config->send_join_timeout);
 
                objdb_get_int (objdb,object_totem_handle, "consensus", &totem_config->consensus_timeout);
 
index 59bc1c8b8e9c96de6376b815a551512c0db77900..b7ad48a70a3d2366abd1c8588827284f27678f58 100644 (file)
@@ -716,8 +716,11 @@ int totemsrp_initialize (
                "token hold (%d ms) retransmits before loss (%d retrans)\n",
                totem_config->token_hold_timeout, totem_config->token_retransmits_before_loss_const);
        log_printf (instance->totemsrp_log_level_notice,
-               "join (%d ms) consensus (%d ms) merge (%d ms)\n",
-               totem_config->join_timeout, totem_config->consensus_timeout,
+               "join (%d ms) send_join (%d ms) consensus (%d ms) merge (%d ms)\n",
+               totem_config->join_timeout,
+               totem_config->send_join_timeout,
+               totem_config->consensus_timeout,
+
                totem_config->merge_timeout);
        log_printf (instance->totemsrp_log_level_notice,
                "downcheck (%d ms) fail to recv const (%d msgs)\n",
@@ -2711,6 +2714,7 @@ static void memb_join_message_send (struct totemsrp_instance *instance)
        memb_join.header.nodeid = instance->my_id.addr[0].nodeid;
        assert (memb_join.header.nodeid);
 
+
        assert (srp_addr_equal (&instance->my_proc_list[0], &instance->my_proc_list[1]) == 0);
        memb_join.ring_seq = instance->my_ring_id.seq;
        memb_join.proc_list_entries = instance->my_proc_list_entries;
@@ -2726,6 +2730,10 @@ static void memb_join_message_send (struct totemsrp_instance *instance)
        iovec[2].iov_len = instance->my_failed_list_entries *
                sizeof (struct srp_addr);
 
+       if (instance->totem_config->send_join_timeout) {
+               usleep (random() % (instance->totem_config->send_join_timeout * 1000));
+       }
+
        totemrrp_mcast_flush_send (
                instance->totemrrp_handle,
                iovec,
index 7ca52772db3f5cb85f2430da0b62ca8b0374157d..27740fdd453e56ec54b4b3bd69e587d503408b00 100644 (file)
@@ -274,6 +274,18 @@ the membership protocol.
 
 The default is 100 milliseconds.
 
+.TP
+send_join
+This timeout specifies in milliseconds an upper range between 0 and send_join
+to wait before sending a join message.  For configurations with less then
+32 nodes, this parameter is not necessary.  For larger rings, this parameter
+is necessary to ensure the NIC is not overflowed with join messages on
+formation of a new ring.  A reasonable value for large rings (128 nodes) would
+be 80msec.  Other timer values must also change if this value is changed.  Seek
+advice from the openais mailing list if trying to run larger configurations.
+
+The default is 0 milliseconds.
+
 .TP
 consensus
 This timeout specifies in milliseconds how long to wait for consensus to be