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-all mailing list