diff options
author | Abutalib Aghayev <agayev@gmail.com> | 2016-02-09 08:17:50 -0700 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2016-02-09 08:17:50 -0700 |
commit | 80c4041b2e7a7d5afb75df563bf51bb27773c095 (patch) | |
tree | 24269d0849176846ed7161b28c3cf7b97ce76029 | |
parent | 8a1209713563b4dedea962909c18b941fb09d01a (diff) | |
download | blktrace-80c4041b2e7a7d5afb75df563bf51bb27773c095.tar.gz blktrace-80c4041b2e7a7d5afb75df563bf51bb27773c095.tar.bz2 |
blktrace: Use number of online CPUs
Currently, blktrace uses _SC_NPROCESSORS_CONF to find out the number of
CPUs. This is a problem, because if you reduce the number of online
CPUs by passing kernel parameter maxcpus, then blktrace fails to start
with the error:
FAILED to start thread on CPU 4: 22/Invalid argument
FAILED to start thread on CPU 5: 22/Invalid argument
...
The attached patch fixes it to use _SC_NPROCESSORS_ONLN.
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | blktrace.c | 4 | ||||
-rw-r--r-- | btreplay/btreplay.c | 4 | ||||
-rw-r--r-- | verify_blkparse.c | 4 |
3 files changed, 6 insertions, 6 deletions
@@ -2663,9 +2663,9 @@ int main(int argc, char *argv[]) setlocale(LC_NUMERIC, "en_US"); pagesize = getpagesize(); - ncpus = sysconf(_SC_NPROCESSORS_CONF); + ncpus = sysconf(_SC_NPROCESSORS_ONLN); if (ncpus < 0) { - fprintf(stderr, "sysconf(_SC_NPROCESSORS_CONF) failed %d/%s\n", + fprintf(stderr, "sysconf(_SC_NPROCESSORS_ONLN) failed %d/%s\n", errno, strerror(errno)); ret = 1; goto out; diff --git a/btreplay/btreplay.c b/btreplay/btreplay.c index 2a1e1cc..6d19564 100644 --- a/btreplay/btreplay.c +++ b/btreplay/btreplay.c @@ -502,8 +502,8 @@ static inline void start_iter(void) */ static void get_ncpus(void) { -#ifdef _SC_NPROCESSORS_CONF - ncpus = sysconf(_SC_NPROCESSORS_CONF); +#ifdef _SC_NPROCESSORS_ONLN + ncpus = sysconf(_SC_NPROCESSORS_ONLN); #else int nrcpus = 4096; cpu_set_t * cpus; diff --git a/verify_blkparse.c b/verify_blkparse.c index 5689f43..3f3e92a 100644 --- a/verify_blkparse.c +++ b/verify_blkparse.c @@ -16,8 +16,8 @@ int main(int argc, char *argv[]) unsigned int seq; FILE *f; -#ifdef _SC_NPROCESSORS_CONF - MAX_CPUS = sysconf(_SC_NPROCESSORS_CONF); +#ifdef _SC_NPROCESSORS_ONLN + MAX_CPUS = sysconf(_SC_NPROCESSORS_ONLN); if (MAX_CPUS < 1) { fprintf(stderr, "Could not determine number of CPUs online:\n%s\n", |