summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2010-06-06 15:27:08 +0000
committerrwatson <rwatson@FreeBSD.org>2010-06-06 15:27:08 +0000
commita4945a127384cf8869e374f093706b7a808b758b (patch)
tree29750bb21c99c22e0763a3facac3c111d852bdc1 /tools
parenta760c554f49beab4b6b2ed43638f97a8b110f4b6 (diff)
downloadFreeBSD-src-a4945a127384cf8869e374f093706b7a808b758b.zip
FreeBSD-src-a4945a127384cf8869e374f093706b7a808b758b.tar.gz
Rework tcpp output so that it generates a comma-delimited list of values,
optionally with a header if "-h" is passed. Toast CPU time measurement in the server for now. Remove -C and -T, since we now always report both connections/sec and Gb/sec. MFC after: 1 week Sponsored by: Juniper Networks
Diffstat (limited to 'tools')
-rw-r--r--tools/tools/netrate/tcpp/tcpp.c23
-rw-r--r--tools/tools/netrate/tcpp/tcpp.h4
-rw-r--r--tools/tools/netrate/tcpp/tcpp_client.c60
-rw-r--r--tools/tools/netrate/tcpp/tcpp_server.c6
4 files changed, 50 insertions, 43 deletions
diff --git a/tools/tools/netrate/tcpp/tcpp.c b/tools/tools/netrate/tcpp/tcpp.c
index ed76305..a194c3d 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, Pflag, Tflag;
+int cflag, hflag, lflag, mflag, pflag, sflag, tflag, Mflag, Pflag;
uint64_t bflag;
u_short rflag;
@@ -61,7 +61,8 @@ usage(void)
fprintf(stderr, "client: tcpp"
" -c remoteIP"
- " [-CPT]"
+ " [-h]"
+ " [-P]"
" [-M localIPcount]"
" [-l localIPbase]"
"\n\t"
@@ -76,7 +77,7 @@ usage(void)
fprintf(stderr, "server: tcpp"
" -s"
- " [-PT]"
+ " [-P]"
" [-l localIPbase]"
" [-m maxtcpsatonce]"
" [-p procs]"
@@ -112,7 +113,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:PT")) != -1) {
+ while ((ch = getopt(argc, argv, "b:c:hl:m:p:r:st:CM:PT")) != -1) {
switch (ch) {
case 'b':
ll = strtoll(optarg, &dummy, 10);
@@ -127,6 +128,10 @@ main(int argc, char *argv[])
err(-1, "inet_aton: %s", optarg);
break;
+ case 'h':
+ hflag++;
+ break;
+
case 'l':
lflag++;
if (inet_aton(optarg, &localipbase.sin_addr) != 1)
@@ -165,10 +170,6 @@ main(int argc, char *argv[])
tflag = ll;
break;
- case 'C':
- Cflag++;
- break;
-
case 'M':
ll = strtoll(optarg, &dummy, 10);
if (*dummy != '\0' || ll <= 1)
@@ -184,10 +185,6 @@ main(int argc, char *argv[])
errx(EX_USAGE, "-P current unsupported");
#endif
- case 'T':
- Tflag++;
- break;
-
default:
usage();
}
@@ -204,7 +201,7 @@ main(int argc, char *argv[])
usage();
/* Several flags are valid only on the client, disallow if server. */
- if (sflag && (Cflag || Mflag > 1))
+ if (sflag && (hflag || Mflag > 1))
usage();
if (cflag)
diff --git a/tools/tools/netrate/tcpp/tcpp.h b/tools/tools/netrate/tcpp/tcpp.h
index edabcfe..ccb4e6f 100644
--- a/tools/tools/netrate/tcpp/tcpp.h
+++ b/tools/tools/netrate/tcpp/tcpp.h
@@ -30,8 +30,8 @@
#define TCPP_H
extern struct sockaddr_in localipbase, remoteip;
-extern int cflag, lflag, mflag, pflag, sflag, tflag;
-extern int Cflag, Iflag, Mflag, Pflag, Tflag;
+extern int cflag, hflag, lflag, mflag, pflag, sflag, tflag;
+extern int Iflag, Mflag, Pflag;
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 f45dca0..888c895 100644
--- a/tools/tools/netrate/tcpp/tcpp_client.c
+++ b/tools/tools/netrate/tcpp/tcpp_client.c
@@ -1,7 +1,11 @@
/*-
* Copyright (c) 2008-2009 Robert N. M. Watson
+ * Copyright (c) 2010 Juniper Networks, Inc.
* All rights reserved.
*
+ * This software was developed by Robert N. M. Watson under contract
+ * to Juniper Networks, Inc.
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -337,33 +341,37 @@ tcpp_client(void)
if (failed)
errx(-1, "Too many errors");
- printf("%jd bytes transferred in %jd.%09jd seconds\n",
- (bflag * tflag * pflag), (intmax_t)ts_finish.tv_sec,
+ if (hflag)
+ printf("bytes,seconds,conn/s,Gb/s,user%%,nice%%,sys%%,"
+ "intr%%,idle%%\n");
+
+ /*
+ * Configuration parameters.
+ */
+ printf("%jd,", bflag * tflag * pflag);
+ printf("%jd.%09jd,", (intmax_t)ts_finish.tv_sec,
(intmax_t)(ts_finish.tv_nsec));
- if (Tflag)
- printf("%d procs ", pflag);
- if (Cflag) {
- printf("%f cps%s", (double)(pflag * tflag)/
- (ts_finish.tv_sec + ts_finish.tv_nsec * 1e-9),
- Tflag ? " " : "\n");
- } else {
- printf("%f Gbps%s", (double)(bflag * tflag * pflag * 8) /
- (ts_finish.tv_sec + ts_finish.tv_nsec * 1e-9) * 1e-9,
- Tflag ? " " : "\n");
- }
- if (Tflag) {
- ticks = 0;
- for (i = 0; i < CPUSTATES; i++) {
- cp_time_finish[i] -= cp_time_start[i];
- ticks += cp_time_finish[i];
- }
- printf("user%% %lu nice%% %lu sys%% %lu intr%% %lu "
- "idle%% %lu\n",
- (100 * cp_time_finish[CP_USER]) / ticks,
- (100 * cp_time_finish[CP_NICE]) / ticks,
- (100 * cp_time_finish[CP_SYS]) / ticks,
- (100 * cp_time_finish[CP_INTR]) / ticks,
- (100 * cp_time_finish[CP_IDLE]) / ticks);
+ /*
+ * Effective transmit rates.
+ */
+ printf("%f,", (double)(pflag * tflag)/
+ (ts_finish.tv_sec + ts_finish.tv_nsec * 1e-9));
+ printf("%f,", (double)(bflag * tflag * pflag * 8) /
+ (ts_finish.tv_sec + ts_finish.tv_nsec * 1e-9) * 1e-9);
+
+ /*
+ * CPU time (est).
+ */
+ ticks = 0;
+ for (i = 0; i < CPUSTATES; i++) {
+ cp_time_finish[i] -= cp_time_start[i];
+ ticks += cp_time_finish[i];
}
+ printf("%0.02f,", (float)(100 * cp_time_finish[CP_USER]) / ticks);
+ printf("%0.02f,", (float)(100 * cp_time_finish[CP_NICE]) / ticks);
+ printf("%0.02f,", (float)(100 * cp_time_finish[CP_SYS]) / ticks);
+ printf("%0.02f,", (float)(100 * cp_time_finish[CP_INTR]) / ticks);
+ printf("%0.02f", (float)(100 * cp_time_finish[CP_IDLE]) / ticks);
+ printf("\n");
}
diff --git a/tools/tools/netrate/tcpp/tcpp_server.c b/tools/tools/netrate/tcpp/tcpp_server.c
index 95077b9..0a79fbb 100644
--- a/tools/tools/netrate/tcpp/tcpp_server.c
+++ b/tools/tools/netrate/tcpp/tcpp_server.c
@@ -277,8 +277,10 @@ tcpp_server_worker(int workernum)
void
tcpp_server(void)
{
+#if 0
long cp_time_last[CPUSTATES], cp_time_now[CPUSTATES], ticks;
size_t size;
+#endif
pid_t pid;
int i;
@@ -307,7 +309,7 @@ tcpp_server(void)
pid_list[i] = pid;
}
- if (Tflag) {
+#if 0
size = sizeof(cp_time_last);
if (sysctlbyname(SYSCTLNAME_CPTIME, &cp_time_last, &size,
NULL, 0) < 0)
@@ -334,7 +336,7 @@ tcpp_server(void)
(100 * cp_time_last[CP_IDLE]) / ticks);
bcopy(cp_time_now, cp_time_last, sizeof(cp_time_last));
}
- }
+#endif
/*
* GC workers.
OpenPOWER on IntegriCloud