diff options
Diffstat (limited to 'package/network/services/dnsmasq/patches/0035-lease-prune-lease-as-soon-as-expired.patch')
-rw-r--r-- | package/network/services/dnsmasq/patches/0035-lease-prune-lease-as-soon-as-expired.patch | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/package/network/services/dnsmasq/patches/0035-lease-prune-lease-as-soon-as-expired.patch b/package/network/services/dnsmasq/patches/0035-lease-prune-lease-as-soon-as-expired.patch deleted file mode 100644 index e1cfde86ba..0000000000 --- a/package/network/services/dnsmasq/patches/0035-lease-prune-lease-as-soon-as-expired.patch +++ /dev/null @@ -1,42 +0,0 @@ -From df6636bff61aa53ed7ad4b34d940805193c0bc74 Mon Sep 17 00:00:00 2001 -From: Florent Fourcot <florent.fourcot@wifirst.fr> -Date: Mon, 11 Feb 2019 17:04:44 +0100 -Subject: [PATCH 35/57] lease: prune lease as soon as expired - -We detected a performance issue on a dnsmasq running many dhcp sessions -(more than 10 000). At the end of the day, the server was only releasing -old DHCP leases but was consuming a lot of CPU. - -It looks like curent dhcp pruning: - 1) it's pruning old sessions (iterate on all current leases). It's - important to note that it's only pruning session expired since more - than one second - 2) it's looking for next lease to expire (iterate on all current leases - again) - 3) it launchs an alarm to catch next expiration found in step 2). This - value can be zero for leases just expired (but not pruned). - -So, for a second, dnsmasq could fall in a "prune loop" by doing: - * Not pruning anything, since difftime() is not > 0 - * Run alarm again with zero as argument - -On a server with very large number of leases and releasing often -sessions, that can waste a very big CPU time. - -Signed-off-by: Florent Fourcot <florent.fourcot@wifirst.fr> -Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> ---- - src/lease.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/src/lease.c -+++ b/src/lease.c -@@ -558,7 +558,7 @@ void lease_prune(struct dhcp_lease *targ - for (lease = leases, up = &leases; lease; lease = tmp) - { - tmp = lease->next; -- if ((lease->expires != 0 && difftime(now, lease->expires) > 0) || lease == target) -+ if ((lease->expires != 0 && difftime(now, lease->expires) >= 0) || lease == target) - { - file_dirty = 1; - if (lease->hostname) |