aboutsummaryrefslogtreecommitdiff
path: root/src/core/aio.c
diff options
context:
space:
mode:
authorPaulo Henrique Silva <ph.silva@gmail.com>2023-08-23 16:23:18 -0300
committerGarrett D'Amore <garrett@damore.org>2023-08-27 22:58:40 -0700
commit5ac5be5cacacdb8d6cac2fa362fce6d78e4dc389 (patch)
tree3d44c763f0bd72117579cdd87bbf305ffd191e8b /src/core/aio.c
parent0172c0512a1d8bb3e165b76d9dd65925965bd3f8 (diff)
downloadnng-5ac5be5cacacdb8d6cac2fa362fce6d78e4dc389.tar.gz
nng-5ac5be5cacacdb8d6cac2fa362fce6d78e4dc389.tar.bz2
nng-5ac5be5cacacdb8d6cac2fa362fce6d78e4dc389.zip
fixes #1619 expose expire threads tunables
This change makes expire threads tunable follows the same strategy as taskq threads tunables. Add NNG_NUM_EXPIRE_THREADS to override the default behavior (`n_cpu` expire threads). The NNG_MAX_EXPIRE_THREADS limit is always applied if > 0, even if you specify the desired number of threads using NNG_NUM_EXPIRE_THREADS. NNG_EXPIRE_THREADS is not used anymore. This was only referenced in the code but never defined on CMake. The logic to cap expire threads between 1 and 256 was removed. If users set no limits, whatever value they choose will be used instead of being silently overridden by us.
Diffstat (limited to 'src/core/aio.c')
-rw-r--r--src/core/aio.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/core/aio.c b/src/core/aio.c
index 2d288a40..564e91a3 100644
--- a/src/core/aio.c
+++ b/src/core/aio.c
@@ -41,7 +41,7 @@ static int nni_aio_expire_q_cnt;
// condition variable, and expiration thread. By default, this is one
// per CPU core present -- the goal being to reduce overall pressure
// caused by a single lock. The number of queues (and threads) can
-// be tuned using the NNG_EXPIRE_THREADS tunable.
+// be tuned using the NNG_NUM_EXPIRE_THREADS tunable.
//
// We will not permit an AIO
// to be marked done if an expiration is outstanding.
@@ -795,24 +795,16 @@ nni_aio_sys_init(void)
{
int num_thr;
- // We create a thread per CPU core for expiration by default.
+#ifndef NNG_NUM_EXPIRE_THREADS
num_thr = nni_plat_ncpu();
-#ifndef NNG_EXPIRE_THREADS
-#ifndef NNG_MAX_EXPIRE_THREADS
-#define NNG_MAX_EXPIRE_THREADS 8
+#else
+ num_thr = NNG_NUM_EXPIRE_THREADS;
#endif
- if ((num_thr > NNG_MAX_EXPIRE_THREADS) && (NNG_MAX_EXPIRE_THREADS > 0)) {
+#if NNG_MAX_EXPIRE_THREADS > 0
+ if (num_thr > NNG_MAX_EXPIRE_THREADS) {
num_thr = NNG_MAX_EXPIRE_THREADS;
}
-#else
- num_thr = NNG_EXPIRE_THREADS;
#endif
- if (num_thr > 256) { // upper limits
- num_thr = 256;
- }
- if (num_thr < 1) {
- num_thr = 1;
- }
nni_aio_expire_q_list =
nni_zalloc(sizeof(nni_aio_expire_q *) * num_thr);