aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/platform.h4
-rw-r--r--src/core/taskq.c11
2 files changed, 11 insertions, 4 deletions
diff --git a/src/core/platform.h b/src/core/platform.h
index 07bfc14c..b709e3ba 100644
--- a/src/core/platform.h
+++ b/src/core/platform.h
@@ -190,6 +190,10 @@ extern int nni_plat_init(int (*)(void));
// will be called until nni_platform_init is called.
extern void nni_plat_fini(void);
+// nni_plat_ncpu returns the number of logical CPUs on the system. This is
+// used to scale the number of independent threads started.
+extern int nni_plat_ncpu(void);
+
//
// TCP Support.
//
diff --git a/src/core/taskq.c b/src/core/taskq.c
index ae66ec67..82a7456b 100644
--- a/src/core/taskq.c
+++ b/src/core/taskq.c
@@ -261,11 +261,14 @@ nni_task_fini(nni_task *task)
int
nni_taskq_sys_init(void)
{
- int rv;
+ int nthrs;
- // XXX: Make the "16" = NCPUs * 2
- rv = nni_taskq_init(&nni_taskq_systq, 16);
- return (rv);
+ nthrs = nni_plat_ncpu() * 2;
+ if (nthrs < 2) {
+ nthrs = 2;
+ }
+
+ return (nni_taskq_init(&nni_taskq_systq, nthrs));
}
void