From 9e85318417773a9ad01b8405415b8086096f20eb Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 3 Feb 2019 10:36:29 +0100 Subject: [PATCH] MINOR: listener: maintain a per-thread count of the number of connections on a listener Having this information will help us improve thread-level distribution of incoming traffic. --- include/types/listener.h | 3 +++ src/listener.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/include/types/listener.h b/include/types/listener.h index 1203d1701..f9eeafaa9 100644 --- a/include/types/listener.h +++ b/include/types/listener.h @@ -214,6 +214,9 @@ struct listener { const struct netns_entry *netns; /* network namespace of the listener*/ + /* cache line boundary */ + unsigned int thr_conn[MAX_THREADS]; /* number of connections per thread */ + /* cache line boundary */ struct list by_fe; /* chaining in frontend's list of listeners */ struct list by_bind; /* chaining in bind_conf's list of listeners */ diff --git a/src/listener.c b/src/listener.c index b4e0bc20b..f642eb4d0 100644 --- a/src/listener.c +++ b/src/listener.c @@ -653,6 +653,7 @@ void listener_accept(int fd) */ next_conn = 0; + HA_ATOMIC_ADD(&l->thr_conn[tid], 1); ret = l->accept(l, cfd, &addr); if (unlikely(ret <= 0)) { /* The connection was closed by stream_accept(). Either @@ -723,6 +724,7 @@ void listener_release(struct listener *l) if (!(l->options & LI_O_UNLIMITED)) HA_ATOMIC_SUB(&actconn, 1); HA_ATOMIC_SUB(&l->nbconn, 1); + HA_ATOMIC_SUB(&l->thr_conn[tid], 1); if (l->state == LI_FULL) resume_listener(l);