diff options
author | rwatson <rwatson@FreeBSD.org> | 2010-06-05 22:59:37 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2010-06-05 22:59:37 +0000 |
commit | f8ea50244af1646f65753b9a92caaf54b5f435b4 (patch) | |
tree | b95c4d7e9d08b8dd4cd4d7c903aa526c77a57fab /tools | |
parent | 0ecf60c0b77f328d007521e54b05d0c3c183a117 (diff) | |
download | FreeBSD-src-f8ea50244af1646f65753b9a92caaf54b5f435b4.zip FreeBSD-src-f8ea50244af1646f65753b9a92caaf54b5f435b4.tar.gz |
Although we currently don't compile in CPU-pinning support by default,
add a -P to enable it if it were.
MFC after: 1 week
Sponsored by: Juniper Networks
Diffstat (limited to 'tools')
-rw-r--r-- | tools/tools/netrate/tcpp/README | 1 | ||||
-rw-r--r-- | tools/tools/netrate/tcpp/tcpp.c | 23 | ||||
-rw-r--r-- | tools/tools/netrate/tcpp/tcpp.h | 2 | ||||
-rw-r--r-- | tools/tools/netrate/tcpp/tcpp_client.c | 24 | ||||
-rw-r--r-- | tools/tools/netrate/tcpp/tcpp_server.c | 24 |
5 files changed, 45 insertions, 29 deletions
diff --git a/tools/tools/netrate/tcpp/README b/tools/tools/netrate/tcpp/README index f720db5..3287b38 100644 --- a/tools/tools/netrate/tcpp/README +++ b/tools/tools/netrate/tcpp/README @@ -39,6 +39,7 @@ The client has more to configure, with the following flags: -c <remoteIP> Select client mode, and specific dest IP -C Print connections/second instead of GBps + -P Pin each worker to a CPU -M <localIPcount> Number of sequential local IPs to use; req. -l -T Include CPU use summary in stats at end of run -b <bytespertcp> Data bytes per connection diff --git a/tools/tools/netrate/tcpp/tcpp.c b/tools/tools/netrate/tcpp/tcpp.c index ce59af3..ed76305 100644 --- a/tools/tools/netrate/tcpp/tcpp.c +++ b/tools/tools/netrate/tcpp/tcpp.c @@ -51,7 +51,7 @@ struct sockaddr_in remoteip; /* Base target address. */ struct sockaddr_in localipbase; /* Base local address, if -l. */ -int cflag, lflag, mflag, pflag, sflag, tflag, Cflag, Mflag, Tflag; +int cflag, lflag, mflag, pflag, sflag, tflag, Cflag, Mflag, Pflag, Tflag; uint64_t bflag; u_short rflag; @@ -61,24 +61,27 @@ usage(void) fprintf(stderr, "client: tcpp" " -c remoteIP" - " [-CT]" + " [-CPT]" " [-M localIPcount]" " [-l localIPbase]" + "\n\t" " [-b bytespertcp]" " [-m maxtcpsatonce]" - "\n" - "\t" " [-p procs]" " [-t tcpsperproc]" + "\n" + "\t" " [-r baseport]" "\n"); fprintf(stderr, "server: tcpp" " -s" - " [-T]" + " [-PT]" " [-l localIPbase]" " [-m maxtcpsatonce]" " [-p procs]" + "\n" + "\t" " [-r baseport]" "\n"); exit(EX_USAGE); @@ -109,7 +112,7 @@ main(int argc, char *argv[]) rflag = BASEPORT_DEFAULT; tflag = TCPS_DEFAULT; Mflag = 1; - while ((ch = getopt(argc, argv, "b:c:l:m:p:r:st:CM:T")) != -1) { + while ((ch = getopt(argc, argv, "b:c:l:m:p:r:st:CM:PT")) != -1) { switch (ch) { case 'b': ll = strtoll(optarg, &dummy, 10); @@ -173,6 +176,14 @@ main(int argc, char *argv[]) Mflag = ll; break; + case 'P': +#if defined(CPU_SETSIZE) && 0 + Pflag++; + break; +#else + errx(EX_USAGE, "-P current unsupported"); +#endif + case 'T': Tflag++; break; diff --git a/tools/tools/netrate/tcpp/tcpp.h b/tools/tools/netrate/tcpp/tcpp.h index 7f4c5eb..edabcfe 100644 --- a/tools/tools/netrate/tcpp/tcpp.h +++ b/tools/tools/netrate/tcpp/tcpp.h @@ -31,7 +31,7 @@ extern struct sockaddr_in localipbase, remoteip; extern int cflag, lflag, mflag, pflag, sflag, tflag; -extern int Cflag, Iflag, Mflag, Tflag; +extern int Cflag, Iflag, Mflag, Pflag, Tflag; extern uint64_t bflag; extern u_short rflag; diff --git a/tools/tools/netrate/tcpp/tcpp_client.c b/tools/tools/netrate/tcpp/tcpp_client.c index 6c3e800..f45dca0 100644 --- a/tools/tools/netrate/tcpp/tcpp_client.c +++ b/tools/tools/netrate/tcpp/tcpp_client.c @@ -224,17 +224,19 @@ tcpp_client_worker(int workernum) int ncpus; size_t len; - len = sizeof(ncpus); - if (sysctlbyname(SYSCTLNAME_CPUS, &ncpus, &len, NULL, 0) < 0) - err(-1, "sysctlbyname: %s", SYSCTLNAME_CPUS); - if (len != sizeof(ncpus)) - errx(-1, "sysctlbyname: %s: len %jd", SYSCTLNAME_CPUS, - (intmax_t)len); - - CPU_ZERO(&mask); - CPU_SET(workernum % ncpus, &mask); - if (sched_setaffinity(0, CPU_SETSIZE, &mask) < 0) - err(-1, "sched_setaffinity"); + if (Pflag) { + len = sizeof(ncpus); + if (sysctlbyname(SYSCTLNAME_CPUS, &ncpus, &len, NULL, 0) < 0) + err(-1, "sysctlbyname: %s", SYSCTLNAME_CPUS); + if (len != sizeof(ncpus)) + errx(-1, "sysctlbyname: %s: len %jd", SYSCTLNAME_CPUS, + (intmax_t)len); + + CPU_ZERO(&mask); + CPU_SET(workernum % ncpus, &mask); + if (sched_setaffinity(0, CPU_SETSIZE, &mask) < 0) + err(-1, "sched_setaffinity"); + } #endif setproctitle("tcpp_client %d", workernum); diff --git a/tools/tools/netrate/tcpp/tcpp_server.c b/tools/tools/netrate/tcpp/tcpp_server.c index 76f5e8d..95077b9 100644 --- a/tools/tools/netrate/tcpp/tcpp_server.c +++ b/tools/tools/netrate/tcpp/tcpp_server.c @@ -201,17 +201,19 @@ tcpp_server_worker(int workernum) int ncpus; ssize_t len; - len = sizeof(ncpus); - if (sysctlbyname(SYSCTLNAME_CPUS, &ncpus, &len, NULL, 0) < 0) - err(-1, "sysctlbyname: %s", SYSCTLNAME_CPUS); - if (len != sizeof(ncpus)) - errx(-1, "sysctlbyname: %s: len %jd", SYSCTLNAME_CPUS, - (intmax_t)len); - - CPU_ZERO(&mask); - CPU_SET(workernum % ncpus, &mask); - if (sched_setaffinity(0, CPU_SETSIZE, &mask) < 0) - err(-1, "sched_setaffinity"); + if (Pflag) { + len = sizeof(ncpus); + if (sysctlbyname(SYSCTLNAME_CPUS, &ncpus, &len, NULL, 0) < 0) + err(-1, "sysctlbyname: %s", SYSCTLNAME_CPUS); + if (len != sizeof(ncpus)) + errx(-1, "sysctlbyname: %s: len %jd", SYSCTLNAME_CPUS, + (intmax_t)len); + + CPU_ZERO(&mask); + CPU_SET(workernum % ncpus, &mask); + if (sched_setaffinity(0, CPU_SETSIZE, &mask) < 0) + err(-1, "sched_setaffinity"); + } #endif setproctitle("tcpp_server %d", workernum); |