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"
|
int "Payload size"
|
||||||
default 4096
|
default 4096
|
||||||
---help---
|
---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
|
config EXAMPLES_TCPBLASTER_PROGNAME1
|
||||||
string "Target1 program name"
|
string "Target1 program name"
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
# 1. Redistributions of source code must retain the above copyright
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
# notice, this list of conditions and the following disclaimer.
|
# notice, this list of conditions and the following disclaimer.
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
# 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
|
# the documentation and/or other materials provided with the
|
||||||
# distribution.
|
# distribution.
|
||||||
# 3. Neither the name NuttX nor the names of its contributors may be
|
# 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
|
# define SENDSIZE 4096
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_EXAMPLES_TCPBLASTER_GROUPSIZE
|
||||||
|
# define GROUPSIZE CONFIG_EXAMPLES_TCPBLASTER_GROUPSIZE
|
||||||
|
#else
|
||||||
|
# define GROUPSIZE 50
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Data
|
* Public Data
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -70,12 +70,17 @@ void tcpblaster_client(void)
|
|||||||
FAR char *outbuf;
|
FAR char *outbuf;
|
||||||
unsigned long sendtotal;
|
unsigned long sendtotal;
|
||||||
unsigned long totallost;
|
unsigned long totallost;
|
||||||
|
int groupcount;
|
||||||
int sendcount;
|
int sendcount;
|
||||||
int partials;
|
int partials;
|
||||||
int sockfd;
|
int sockfd;
|
||||||
int nbytessent;
|
int nbytessent;
|
||||||
int ch;
|
int ch;
|
||||||
int i;
|
int i;
|
||||||
|
char timebuff[100];
|
||||||
|
|
||||||
|
|
||||||
|
setbuf(stdout, NULL);
|
||||||
|
|
||||||
/* Allocate buffers */
|
/* Allocate buffers */
|
||||||
|
|
||||||
@ -142,6 +147,7 @@ void tcpblaster_client(void)
|
|||||||
|
|
||||||
/* Then send messages forever */
|
/* Then send messages forever */
|
||||||
|
|
||||||
|
groupcount = 0;
|
||||||
sendcount = 0;
|
sendcount = 0;
|
||||||
sendtotal = 0;
|
sendtotal = 0;
|
||||||
partials = 0;
|
partials = 0;
|
||||||
@ -200,7 +206,7 @@ void tcpblaster_client(void)
|
|||||||
|
|
||||||
sendtotal += nbytessent;
|
sendtotal += nbytessent;
|
||||||
|
|
||||||
if (++sendcount >= 50)
|
if (++sendcount >= GROUPSIZE)
|
||||||
{
|
{
|
||||||
struct timespec elapsed;
|
struct timespec elapsed;
|
||||||
struct timespec curr;
|
struct timespec curr;
|
||||||
@ -221,12 +227,12 @@ void tcpblaster_client(void)
|
|||||||
elapsed.tv_nsec = curr.tv_nsec + borrow;
|
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;
|
felapsed = (float)elapsed.tv_sec + (float)elapsed.tv_nsec / 1000000000.0;
|
||||||
printf("Sent %d buffers: %7.1f Kb (avg %5.1f Kb) in "
|
printf("[%s] %d: Sent %d %d-byte buffers: %7.1f KB (avg %5.1f KB) in %6.2f seconds (%7.1f KB/second)\n",
|
||||||
"%6.2f Sec (%7.1f Kb/Sec)\n",
|
timebuff, groupcount, sendcount, SENDSIZE, fkbrecvd, fkbrecvd/sendcount, felapsed, fkbrecvd/felapsed);
|
||||||
sendcount, fkbrecvd, fkbrecvd / sendcount, felapsed,
|
|
||||||
fkbrecvd / felapsed);
|
|
||||||
|
|
||||||
if (partials > 0)
|
if (partials > 0)
|
||||||
{
|
{
|
||||||
@ -241,6 +247,7 @@ void tcpblaster_client(void)
|
|||||||
sendtotal = 0;
|
sendtotal = 0;
|
||||||
partials = 0;
|
partials = 0;
|
||||||
totallost = 0;
|
totallost = 0;
|
||||||
|
groupcount++;
|
||||||
|
|
||||||
clock_gettime(CLOCK_REALTIME, &start);
|
clock_gettime(CLOCK_REALTIME, &start);
|
||||||
}
|
}
|
||||||
|
@ -72,12 +72,16 @@ void tcpblaster_server(void)
|
|||||||
struct timespec start;
|
struct timespec start;
|
||||||
unsigned long recvtotal;
|
unsigned long recvtotal;
|
||||||
socklen_t addrlen;
|
socklen_t addrlen;
|
||||||
FAR char *buffer;
|
char *buffer;
|
||||||
|
int groupcount;
|
||||||
int recvcount;
|
int recvcount;
|
||||||
int listensd;
|
int listensd;
|
||||||
int acceptsd;
|
int acceptsd;
|
||||||
int nbytesread;
|
int nbytesread;
|
||||||
int optval;
|
int optval;
|
||||||
|
char timebuff[100];
|
||||||
|
|
||||||
|
setbuf(stdout, NULL);
|
||||||
|
|
||||||
/* Allocate a BIG buffer */
|
/* Allocate a BIG buffer */
|
||||||
|
|
||||||
@ -184,6 +188,7 @@ void tcpblaster_server(void)
|
|||||||
|
|
||||||
recvcount = 0;
|
recvcount = 0;
|
||||||
recvtotal = 0;
|
recvtotal = 0;
|
||||||
|
groupcount = 0;
|
||||||
|
|
||||||
clock_gettime(CLOCK_REALTIME, &start);
|
clock_gettime(CLOCK_REALTIME, &start);
|
||||||
|
|
||||||
@ -227,7 +232,7 @@ void tcpblaster_server(void)
|
|||||||
|
|
||||||
recvtotal += nbytesread;
|
recvtotal += nbytesread;
|
||||||
|
|
||||||
if (++recvcount >= 50)
|
if (++recvcount >= GROUPSIZE)
|
||||||
{
|
{
|
||||||
struct timespec elapsed;
|
struct timespec elapsed;
|
||||||
struct timespec curr;
|
struct timespec curr;
|
||||||
@ -248,15 +253,16 @@ void tcpblaster_server(void)
|
|||||||
elapsed.tv_nsec = curr.tv_nsec + borrow;
|
elapsed.tv_nsec = curr.tv_nsec + borrow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strftime(timebuff, 100, "%Y-%m-%d %H:%M:%S.000", localtime (&curr));
|
||||||
|
|
||||||
fkbsent = (float)recvtotal / 1024.0;
|
fkbsent = (float)recvtotal / 1024.0;
|
||||||
felapsed = (float)elapsed.tv_sec + (float)elapsed.tv_nsec / 1000000000.0;
|
felapsed = (float)elapsed.tv_sec + (float)elapsed.tv_nsec / 1000000000.0;
|
||||||
printf("Received %d buffers: %7.1f Kb (avg %5.1f Kb) in "
|
printf("[%s] %d: Received %d buffers: %7.1f KB (buffer average size: %5.1f KB) in %6.2f seconds (%7.1f KB/second)\n",
|
||||||
"%6.2f Sec (%7.1f Kb/Sec)\n",
|
timebuff, groupcount, recvcount, fkbsent, fkbsent/recvcount, felapsed, fkbsent/felapsed);
|
||||||
recvcount, fkbsent, fkbsent / recvcount, felapsed,
|
|
||||||
fkbsent / felapsed);
|
|
||||||
|
|
||||||
recvcount = 0;
|
recvcount = 0;
|
||||||
recvtotal = 0;
|
recvtotal = 0;
|
||||||
|
groupcount++;
|
||||||
|
|
||||||
clock_gettime(CLOCK_REALTIME, &start);
|
clock_gettime(CLOCK_REALTIME, &start);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user