tcpblaster reporting and docs improvements
- changed incorrect Kb to correct KB in program output
- added readme
Squashed commit of the following:
commit b81821fd788eb08ffdf5a3084ab3d128788b75da
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 16:58:29 2020 -0800
formatting improvements
commit a70e7109dd90522e6d7f680790d80c9328a8ba9c
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 16:58:13 2020 -0800
formatting improvements
commit c11a5b3c8ee38fe080d121db87b7d26c0baf9f93
Author: Adam Feuer <adam@starcat.io>
Date: Sun Feb 23 17:03:22 2020 -0800
remove printf debugging statement
commit 94bcaa89d2df326ed2b560e935d344932c46607d
Merge: fddb3ee4 d6604922
Author: Adam Feuer <adam@starcat.io>
Date: Sun Feb 23 16:58:35 2020 -0800
Merge branch 'master' into feature/tcpblaster-improvements
commit fddb3ee4ee9ba185f0f4e01c205620bbcb02e40e
Author: Adam Feuer <adam@starcat.io>
Date: Sat Feb 22 16:29:51 2020 -0800
fixed typo
commit d398d6f3803d81e849814548be9671ac33f08168
Author: Adam Feuer <adam@starcat.io>
Date: Sat Feb 22 16:29:04 2020 -0800
logging now has timestamp; improved configuration
This commit is contained in:
parent
d89d8b1a2c
commit
5a10c0e8e7
@ -17,7 +17,14 @@ config EXAMPLES_TCPBLASTER_SENDSIZE
|
||||
int "Payload size"
|
||||
default 4096
|
||||
---help---
|
||||
This setting determines size of each test packet sent to the server.
|
||||
This setting determines size of each TCP send that is sent to the server.
|
||||
|
||||
config EXAMPLES_TCPBLASTER_GROUPSIZE
|
||||
int "Group size"
|
||||
default 50
|
||||
---help---
|
||||
This setting determines how many TCP sends are sent to the server before printing statistics
|
||||
and starting again.
|
||||
|
||||
config EXAMPLES_TCPBLASTER_PROGNAME1
|
||||
string "Target1 program name"
|
||||
|
@ -11,7 +11,7 @@
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# notice, this list of conditions and the following dsclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# 3. Neither the name NuttX nor the names of its contributors may be
|
||||
|
40
examples/tcpblaster/README.txt
Executable file
40
examples/tcpblaster/README.txt
Executable file
@ -0,0 +1,40 @@
|
||||
tcpblaster Performance Test Example
|
||||
===================================
|
||||
|
||||
To set up, do `make menuconfig` and select the Apps > Examples > tcpblaster. By default, nuttx will the be the client
|
||||
which sends data; and the host computer (Linux, macOS, or Windows) will be the server.
|
||||
|
||||
Set up networking so the nuttx computer can ping the host, and the host can ping nuttx. Now you are ready to run the
|
||||
test.
|
||||
|
||||
On host:
|
||||
|
||||
$ ./tcpserver
|
||||
Binding to IPv4 Address: 00000000
|
||||
server: Accepting connections on port 5471
|
||||
|
||||
On nuttx:
|
||||
|
||||
nsh> tcpclient
|
||||
Connecting to IPv4 Address: 0100000a
|
||||
client: Connected
|
||||
[2014-07-31 00:16:15.000] 0: Sent 200 4096-byte buffers: 800.0 KB (avg 4.0 KB) in 0.18 seconds ( 4444.4 KB/second)
|
||||
|
||||
Now on the host you should see something like:
|
||||
|
||||
$ ./tcpserver
|
||||
Binding to IPv4 Address: 00000000
|
||||
server: Accepting connections on port 5471
|
||||
server: Connection accepted -- receiving
|
||||
[2020-02-22 16:17:07.000] 0: Received 200 buffers: 502.9 KB (buffer average size: 2.5 KB) in 0.12 seconds ( 4194.8 KB/second)
|
||||
[2020-02-22 16:17:07.000] 1: Received 200 buffers: 393.1 KB (buffer average size: 2.0 KB) in 0.09 seconds ( 4299.4 KB/second)
|
||||
|
||||
|
||||
This will tell you the link speed in KB/sec – kilobytes per second. If you want kilobits, multiply by 8.
|
||||
|
||||
You can use the `make menuconfig` to reverse the setup, and have nuttx be the server, and the host be the client. If you
|
||||
do that, start the server first (nuttx), then start the client (host).
|
||||
|
||||
|
||||
|
||||
|
@ -115,6 +115,12 @@
|
||||
# define SENDSIZE 4096
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_EXAMPLES_TCPBLASTER_GROUPSIZE
|
||||
# define GROUPSIZE CONFIG_EXAMPLES_TCPBLASTER_GROUPSIZE
|
||||
#else
|
||||
# define GROUPSIZE 50
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
@ -70,13 +70,18 @@ void tcpblaster_client(void)
|
||||
FAR char *outbuf;
|
||||
unsigned long sendtotal;
|
||||
unsigned long totallost;
|
||||
int groupcount;
|
||||
int sendcount;
|
||||
int partials;
|
||||
int sockfd;
|
||||
int nbytessent;
|
||||
int ch;
|
||||
int i;
|
||||
char timebuff[100];
|
||||
|
||||
|
||||
setbuf(stdout, NULL);
|
||||
|
||||
/* Allocate buffers */
|
||||
|
||||
outbuf = (FAR char *)malloc(SENDSIZE);
|
||||
@ -142,6 +147,7 @@ void tcpblaster_client(void)
|
||||
|
||||
/* Then send messages forever */
|
||||
|
||||
groupcount = 0;
|
||||
sendcount = 0;
|
||||
sendtotal = 0;
|
||||
partials = 0;
|
||||
@ -200,7 +206,7 @@ void tcpblaster_client(void)
|
||||
|
||||
sendtotal += nbytessent;
|
||||
|
||||
if (++sendcount >= 50)
|
||||
if (++sendcount >= GROUPSIZE)
|
||||
{
|
||||
struct timespec elapsed;
|
||||
struct timespec curr;
|
||||
@ -221,12 +227,12 @@ void tcpblaster_client(void)
|
||||
elapsed.tv_nsec = curr.tv_nsec + borrow;
|
||||
}
|
||||
|
||||
fkbrecvd = (float)sendtotal / 1024.0;
|
||||
strftime(timebuff, 100, "%Y-%m-%d %H:%M:%S.000", localtime (&curr));
|
||||
|
||||
fkbrecvd = (float)sendtotal / 1024.0;
|
||||
felapsed = (float)elapsed.tv_sec + (float)elapsed.tv_nsec / 1000000000.0;
|
||||
printf("Sent %d buffers: %7.1f Kb (avg %5.1f Kb) in "
|
||||
"%6.2f Sec (%7.1f Kb/Sec)\n",
|
||||
sendcount, fkbrecvd, fkbrecvd / sendcount, felapsed,
|
||||
fkbrecvd / felapsed);
|
||||
printf("[%s] %d: Sent %d %d-byte buffers: %7.1f KB (avg %5.1f KB) in %6.2f seconds (%7.1f KB/second)\n",
|
||||
timebuff, groupcount, sendcount, SENDSIZE, fkbrecvd, fkbrecvd/sendcount, felapsed, fkbrecvd/felapsed);
|
||||
|
||||
if (partials > 0)
|
||||
{
|
||||
@ -241,6 +247,7 @@ void tcpblaster_client(void)
|
||||
sendtotal = 0;
|
||||
partials = 0;
|
||||
totallost = 0;
|
||||
groupcount++;
|
||||
|
||||
clock_gettime(CLOCK_REALTIME, &start);
|
||||
}
|
||||
|
@ -72,12 +72,16 @@ void tcpblaster_server(void)
|
||||
struct timespec start;
|
||||
unsigned long recvtotal;
|
||||
socklen_t addrlen;
|
||||
FAR char *buffer;
|
||||
char *buffer;
|
||||
int groupcount;
|
||||
int recvcount;
|
||||
int listensd;
|
||||
int acceptsd;
|
||||
int nbytesread;
|
||||
int optval;
|
||||
char timebuff[100];
|
||||
|
||||
setbuf(stdout, NULL);
|
||||
|
||||
/* Allocate a BIG buffer */
|
||||
|
||||
@ -184,6 +188,7 @@ void tcpblaster_server(void)
|
||||
|
||||
recvcount = 0;
|
||||
recvtotal = 0;
|
||||
groupcount = 0;
|
||||
|
||||
clock_gettime(CLOCK_REALTIME, &start);
|
||||
|
||||
@ -227,7 +232,7 @@ void tcpblaster_server(void)
|
||||
|
||||
recvtotal += nbytesread;
|
||||
|
||||
if (++recvcount >= 50)
|
||||
if (++recvcount >= GROUPSIZE)
|
||||
{
|
||||
struct timespec elapsed;
|
||||
struct timespec curr;
|
||||
@ -248,15 +253,16 @@ void tcpblaster_server(void)
|
||||
elapsed.tv_nsec = curr.tv_nsec + borrow;
|
||||
}
|
||||
|
||||
strftime(timebuff, 100, "%Y-%m-%d %H:%M:%S.000", localtime (&curr));
|
||||
|
||||
fkbsent = (float)recvtotal / 1024.0;
|
||||
felapsed = (float)elapsed.tv_sec + (float)elapsed.tv_nsec / 1000000000.0;
|
||||
printf("Received %d buffers: %7.1f Kb (avg %5.1f Kb) in "
|
||||
"%6.2f Sec (%7.1f Kb/Sec)\n",
|
||||
recvcount, fkbsent, fkbsent / recvcount, felapsed,
|
||||
fkbsent / felapsed);
|
||||
printf("[%s] %d: Received %d buffers: %7.1f KB (buffer average size: %5.1f KB) in %6.2f seconds (%7.1f KB/second)\n",
|
||||
timebuff, groupcount, recvcount, fkbsent, fkbsent/recvcount, felapsed, fkbsent/felapsed);
|
||||
|
||||
recvcount = 0;
|
||||
recvtotal = 0;
|
||||
groupcount++;
|
||||
|
||||
clock_gettime(CLOCK_REALTIME, &start);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user