git: 13890d30f8b2 - main - altq: improve pfctl config time for large numbers of queues
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 28 Jul 2022 20:11:47 UTC
The branch main has been updated by kp:
URL: https://cgit.FreeBSD.org/src/commit/?id=13890d30f8b215b84800cce3f161ad5148c82c00
commit 13890d30f8b215b84800cce3f161ad5148c82c00
Author: James Skon <jps@rgnets.com>
AuthorDate: 2022-07-28 19:58:31 +0000
Commit: Kristof Provost <kp@FreeBSD.org>
CommitDate: 2022-07-28 20:00:07 +0000
altq: improve pfctl config time for large numbers of queues
In the current implementation of altq_hfsc.c, whne new queues are being
added (by pfctl), each queue is added to the tail of the siblings linked
list under the parent queue.
On a system with many queues (50,000+) this leads to very long load
times at the insertion process must scan the entire list for every new
queue,
Since this list is unordered, this changes merely adds the new queue to
the head of the list rather than the tail.
Reviewed by: kp
MFC after: 3 weeks
Sponsored by: RG Nets
Differential Revision: https://reviews.freebsd.org/D35964
---
sys/net/altq/altq_hfsc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sys/net/altq/altq_hfsc.c b/sys/net/altq/altq_hfsc.c
index c3e84b345509..5551ad1313e4 100644
--- a/sys/net/altq/altq_hfsc.c
+++ b/sys/net/altq/altq_hfsc.c
@@ -514,9 +514,9 @@ hfsc_class_create(struct hfsc_if *hif, struct service_curve *rsc,
if ((p = parent->cl_children) == NULL)
parent->cl_children = cl;
else {
- while (p->cl_siblings != NULL)
- p = p->cl_siblings;
- p->cl_siblings = cl;
+ /* Put new class at beginning of list */
+ cl->cl_siblings = parent->cl_children;
+ parent->cl_children = cl;
}
}
IFQ_UNLOCK(hif->hif_ifq);