You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2020/02/25 02:09:44 UTC

[incubator-nuttx-apps] branch master updated: tcpblaster reporting and docs improvements

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 5a10c0e  tcpblaster reporting and docs improvements
5a10c0e is described below

commit 5a10c0e8e7e065c55334632457726f6ec023322e
Author: Adam Feuer <ad...@starcat.io>
AuthorDate: Mon Feb 24 17:00:08 2020 -0800

    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 <ad...@starcat.io>
    Date:   Mon Feb 24 16:58:29 2020 -0800
    
        formatting improvements
    
    commit a70e7109dd90522e6d7f680790d80c9328a8ba9c
    Author: Adam Feuer <ad...@starcat.io>
    Date:   Mon Feb 24 16:58:13 2020 -0800
    
        formatting improvements
    
    commit c11a5b3c8ee38fe080d121db87b7d26c0baf9f93
    Author: Adam Feuer <ad...@starcat.io>
    Date:   Sun Feb 23 17:03:22 2020 -0800
    
        remove printf debugging statement
    
    commit 94bcaa89d2df326ed2b560e935d344932c46607d
    Merge: fddb3ee4 d6604922
    Author: Adam Feuer <ad...@starcat.io>
    Date:   Sun Feb 23 16:58:35 2020 -0800
    
        Merge branch 'master' into feature/tcpblaster-improvements
    
    commit fddb3ee4ee9ba185f0f4e01c205620bbcb02e40e
    Author: Adam Feuer <ad...@starcat.io>
    Date:   Sat Feb 22 16:29:51 2020 -0800
    
        fixed typo
    
    commit d398d6f3803d81e849814548be9671ac33f08168
    Author: Adam Feuer <ad...@starcat.io>
    Date:   Sat Feb 22 16:29:04 2020 -0800
    
        logging now has timestamp; improved configuration
---
 examples/tcpblaster/Kconfig             |  9 +++++++-
 examples/tcpblaster/Makefile            |  2 +-
 examples/tcpblaster/README.txt          | 40 +++++++++++++++++++++++++++++++++
 examples/tcpblaster/tcpblaster.h        |  6 +++++
 examples/tcpblaster/tcpblaster_client.c | 19 +++++++++++-----
 examples/tcpblaster/tcpblaster_server.c | 18 ++++++++++-----
 6 files changed, 80 insertions(+), 14 deletions(-)

diff --git a/examples/tcpblaster/Kconfig b/examples/tcpblaster/Kconfig
index c002ef7..470487c 100644
--- a/examples/tcpblaster/Kconfig
+++ b/examples/tcpblaster/Kconfig
@@ -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"
diff --git a/examples/tcpblaster/Makefile b/examples/tcpblaster/Makefile
index 099c2b9..fe09cbc 100644
--- a/examples/tcpblaster/Makefile
+++ b/examples/tcpblaster/Makefile
@@ -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
diff --git a/examples/tcpblaster/README.txt b/examples/tcpblaster/README.txt
new file mode 100755
index 0000000..86ff00a
--- /dev/null
+++ b/examples/tcpblaster/README.txt
@@ -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).
+
+
+
+
diff --git a/examples/tcpblaster/tcpblaster.h b/examples/tcpblaster/tcpblaster.h
index eafdf44..7925d6a 100644
--- a/examples/tcpblaster/tcpblaster.h
+++ b/examples/tcpblaster/tcpblaster.h
@@ -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
  ****************************************************************************/
diff --git a/examples/tcpblaster/tcpblaster_client.c b/examples/tcpblaster/tcpblaster_client.c
index 4d89853..701eabe 100644
--- a/examples/tcpblaster/tcpblaster_client.c
+++ b/examples/tcpblaster/tcpblaster_client.c
@@ -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);
         }
diff --git a/examples/tcpblaster/tcpblaster_server.c b/examples/tcpblaster/tcpblaster_server.c
index 39b8dd1..6f9f753 100644
--- a/examples/tcpblaster/tcpblaster_server.c
+++ b/examples/tcpblaster/tcpblaster_server.c
@@ -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);
         }