Liang Mancang <liang...@chinatelecom.cn> writes: > On Mon, Feb 20, 2023 at 07:38:39PM +0100, Paolo Valerio wrote: >> Paolo Valerio <pvale...@redhat.com> writes: >> >> > Hello Liang, >> > >> > Liang Mancang <liang...@chinatelecom.cn> writes: >> > >> >> when a exp_list contains more than the clean_end's number of nodes, >> >> and these nodes will not expire immediately. Then, every times we >> >> call conntrack_clean, it use the same next_sweep to get exp_list. >> >> >> > >> > Yes, in general, if the previous count exceeds the clean_end, it should >> > not make the sweeper restart from a list just swept, but it should not >> > happen that a single list contains more than n_conn_limit / 64. >> > >> > Did you observe a single exp_list containing more than n_conn_limit / 64 >> > entries? > We only select exp_list for a conntrack entry when createing it, but never > move > them when update their expires or delete them. So the number of each exp_list > will become unbalanced after long-time running.
of course, if not balanced that could happen. >> > >> >> Actually, we should add i every times after we call ct_sweep. >> >> >> >> Signed-off-by: Liang Mancang <liang...@chinatelecom.cn> >> >> --- >> >> lib/conntrack.c | 5 +++-- >> >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> >> >> diff --git a/lib/conntrack.c b/lib/conntrack.c >> >> index 524670e45..5029b2cda 100644 >> >> --- a/lib/conntrack.c >> >> +++ b/lib/conntrack.c >> >> @@ -1512,12 +1512,13 @@ conntrack_clean(struct conntrack *ct, long long >> >> now) >> >> clean_end = n_conn_limit / 64; >> >> >> >> for (i = ct->next_sweep; i < N_EXP_LISTS; i++) { >> >> - count += ct_sweep(ct, &ct->exp_lists[i], now); >> >> - >> >> if (count > clean_end) { >> >> next_wakeup = 0; >> >> + >> > >> > This new line is not needed, and a Fixes tag could be added: >> > >> > Fixes: 3d9c1b855a5f ("conntrack: Replace timeout based expiration lists >> > with rculists.") >> > >> > The patch LGTM, >> > >> >> Sorry, the last line slipped out. Please consider my question and the >> other comments. I will explicitly tag the patch once we're done. >> > I sent v2 for this. Thanks. >> >> break; >> >> } >> >> + >> >> + count += ct_sweep(ct, &ct->exp_lists[i], now); >> >> } >> >> >> >> ct->next_sweep = (i < N_EXP_LISTS) ? i : 0; >> >> -- >> >> 2.30.0.windows.2 >> >> >> >> _______________________________________________ >> >> dev mailing list >> >> d...@openvswitch.org _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev