svn commit: r208859 - head/tools/tools/netrate/tcpp
Robert Watson
rwatson at FreeBSD.org
Sat Jun 5 22:59:37 UTC 2010
Author: rwatson
Date: Sat Jun 5 22:59:37 2010
New Revision: 208859
URL: http://svn.freebsd.org/changeset/base/208859
Log:
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
Modified:
head/tools/tools/netrate/tcpp/README
head/tools/tools/netrate/tcpp/tcpp.c
head/tools/tools/netrate/tcpp/tcpp.h
head/tools/tools/netrate/tcpp/tcpp_client.c
head/tools/tools/netrate/tcpp/tcpp_server.c
Modified: head/tools/tools/netrate/tcpp/README
==============================================================================
--- head/tools/tools/netrate/tcpp/README Sat Jun 5 22:57:53 2010 (r208858)
+++ head/tools/tools/netrate/tcpp/README Sat Jun 5 22:59:37 2010 (r208859)
@@ -39,6 +39,7 @@ The client has more to configure, with t
-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
Modified: head/tools/tools/netrate/tcpp/tcpp.c
==============================================================================
--- head/tools/tools/netrate/tcpp/tcpp.c Sat Jun 5 22:57:53 2010 (r208858)
+++ head/tools/tools/netrate/tcpp/tcpp.c Sat Jun 5 22:59:37 2010 (r208859)
@@ -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;
Modified: head/tools/tools/netrate/tcpp/tcpp.h
==============================================================================
--- head/tools/tools/netrate/tcpp/tcpp.h Sat Jun 5 22:57:53 2010 (r208858)
+++ head/tools/tools/netrate/tcpp/tcpp.h Sat Jun 5 22:59:37 2010 (r208859)
@@ -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;
Modified: head/tools/tools/netrate/tcpp/tcpp_client.c
==============================================================================
--- head/tools/tools/netrate/tcpp/tcpp_client.c Sat Jun 5 22:57:53 2010 (r208858)
+++ head/tools/tools/netrate/tcpp/tcpp_client.c Sat Jun 5 22:59:37 2010 (r208859)
@@ -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);
Modified: head/tools/tools/netrate/tcpp/tcpp_server.c
==============================================================================
--- head/tools/tools/netrate/tcpp/tcpp_server.c Sat Jun 5 22:57:53 2010 (r208858)
+++ head/tools/tools/netrate/tcpp/tcpp_server.c Sat Jun 5 22:59:37 2010 (r208859)
@@ -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);
More information about the svn-src-head
mailing list