MINOR: spoe: Don't systematically create new applets if processing rate is low

When an event must be processed, we decide to create a new SPOE applet if there
is no idle applet at all or if the processing rate is lower than the number of
waiting events. But when the processing rate is very low (< 1 event/second), a
new applet is created independently of the number of idle applets.

Now, when there is at least one idle applet when there is only one event to
process, no new applet is created.

This patch is related to the issue #690.
This commit is contained in:
Christopher Faulet 2020-06-22 15:32:14 +02:00
parent cf6898cd14
commit eccfa612e8

View File

@ -2010,7 +2010,7 @@ spoe_queue_context(struct spoe_context *ctx)
/* Check if we need to create a new SPOE applet or not. */
if (!eb_is_empty(&agent->rt[tid].idle_applets) &&
agent->rt[tid].processing < read_freq_ctr(&agent->rt[tid].processing_per_sec))
(agent->rt[tid].processing == 1 || agent->rt[tid].processing < read_freq_ctr(&agent->rt[tid].processing_per_sec)))
goto end;
SPOE_PRINTF(stderr, "%d.%06d [SPOE/%-15s] %s: stream=%p"