]> git.baikalelectronics.ru Git - kernel.git/commit
netfilter: conntrack: collect all entries in one cycle
authorFlorian Westphal <fw@strlen.de>
Mon, 26 Jul 2021 22:29:19 +0000 (00:29 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 6 Aug 2021 15:07:35 +0000 (17:07 +0200)
commit737686ed8aff46e5debff186a87873fd765ac68f
treec78586cfc4a92c8201a5ed0eea4f824c61177f3d
parentb2ffd4a56b2637591dc9dc57ec9fdba250b7cbb0
netfilter: conntrack: collect all entries in one cycle

Michal Kubecek reports that conntrack gc is responsible for frequent
wakeups (every 125ms) on idle systems.

On busy systems, timed out entries are evicted during lookup.
The gc worker is only needed to remove entries after system becomes idle
after a busy period.

To resolve this, always scan the entire table.
If the scan is taking too long, reschedule so other work_structs can run
and resume from next bucket.

After a completed scan, wait for 2 minutes before the next cycle.
Heuristics for faster re-schedule are removed.

GC_SCAN_INTERVAL could be exposed as a sysctl in the future to allow
tuning this as-needed or even turn the gc worker off.

Reported-by: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_conntrack_core.c