Hi Jon,
No, tolerance value is correct, but we always update the node keep
alive interval if the new one less than current one:
static void tipc_node_calculate_timer(struct tipc_node *n, struct
tipc_link *l)
{
unsigned long tol = tipc_link_tolerance(l);
unsigned long intv = ((tol / 4) > 500) ? 500 : tol / 4;
/* Link with lowest tolerance determines timer interval */
if (intv < n->keepalive_intv) <= this line caused unexpected
n->keepalive_intv = intv;
/* Ensure link's abort limit corresponds to current tolerance */
tipc_link_set_abort_limit(l, tol / n->keepalive_intv);
}
Regards
Hoang
Quoting Jon Maloy <[email protected]>:
Ho Hoang,
No, this isn't correct at all. Of course, when you move the
tolerance back to 1500 ms the keepalive timer should go back to 375
ms, otherwise the tolerance in practice remains at 500 ms.
The same is true for the last change. Internally, tolerance is 4 *
keepalive_intv, so if this one is wrong, the tolerance also becomes
wrong.
///jon
From: Hoang Le <[email protected]>
Sent: October 18, 2018 6:11 AM
To: Jon Maloy <[email protected]>
Cc: [email protected]; [email protected]
Subject: more STATE_MSG sent although with high tolerance;
Hi Jon,
Do you think below behavior of tipc_node_calculate_timer correct
whether or not:
Step 0:
tipc_node_create:
n->keepalive_intv = U32_MAX
Step 1:
Link up with tolerance default 1500ms
tipc_node_calculate_timer:
n->keepalive_intv = 375ms;
Step 2:
Setting tolerance for link to 500ms
tipc_node_calculate_timer:
n->keepalive_intv = 125ms;
Step 3:
Setting tolerance for link back to default 1500ms
tipc_node_calculate_timer:
n->keepalive_intv = 125ms;
Step 4:
Increase tolerance to 9000ms
tipc_node_calculate_timer:
n->keepalive_intv = 125ms;
At result, more STATE_MSG sent out than expected within short time
when increasing tolerance if system is running with heavy traffic.
Regards,
Hoang
_______________________________________________
tipc-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tipc-discussion