]> rtime.felk.cvut.cz Git - frescor/fwp.git/commitdiff
Added runtime statistics (to check correctness of results).
authorMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 1 Dec 2007 17:46:33 +0000 (18:46 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sat, 1 Dec 2007 17:46:33 +0000 (18:46 +0100)
wme_test/common.c
wme_test/common.h
wme_test/wclient.c
wme_test/wserver.c

index dc2a539647c157f3180a5d721867a578abe84dcb..31a30c2a6b4ba4732d5196593262a235625b2237 100644 (file)
@@ -6,6 +6,7 @@
 
 const int prio_to_ac[8] = {2,3,3,2,1,1,0,0};
 const unsigned int ac_to_tos[4] = {224,160,96,64};
+const char *ac_to_text[4] = {[AC_VO] = "AC_VO", [AC_VI] = "AC_VI", [AC_BE] = "AC_BE", [AC_BK] = "AC_BK", };
 
 void set_rt_prio(int priority)
 {
index 0f960b41fe214ef9f6dc6e0e494bdfa660e5cf1b..6cb66a3377b06548c344396251894e017edcdaf7 100644 (file)
@@ -13,6 +13,7 @@ enum {
 
 extern const int prio_to_ac[8];
 extern const unsigned int ac_to_tos[4];
+extern const char *ac_to_text[4];
 
 void block_signals(void);
 void set_rt_prio(int priority);
index a6e7a63538887e6bfa15c5afe31d6b56e9ccaf84..10a987fe32d461c801ce4228f7c326c196a792a6 100644 (file)
 #include "common.h"
 #include <semaphore.h>
 
-/*#define AC_VO 0
-#define AC_VI 1
-#define AC_BE 2
-#define AC_BK 3
-*/
-
 #define PARAM_SERVERADDR 1
 #define MAX_SENDENDPOINTS  10
 
@@ -31,6 +25,7 @@ int ac_sockfd[AC_QUEUES];
 
 struct receiver {
        pthread_t thread;
+       unsigned received, last_received;
 } receivers[AC_QUEUES];
 
 FILE* logfd;
@@ -237,6 +232,8 @@ void* receiver(void* queue)
          
                if (trans_time_usec < MAX_DELAY_US)
                        delay_stats[ac][trans_time_usec/GRANULARITY]++;
+
+               receivers[ac].received++;
        
                /*if (trans_time_nsec < min_trans_time) 
                        min_trans_time = trans_time_nsec;*/
@@ -396,14 +393,22 @@ int main(int argc, char *argv[])
        }
        
        while (!exit_flag) {
-               sleep(100000);
+               printf("\r");
+               for (ac = 0; ac<AC_QUEUES; ac++) {
+                       int delta = receivers[ac].received - receivers[ac].last_received;
+                       receivers[ac].last_received = receivers[ac].received;
+                       printf("%s: %5d (+%4d)  ", ac_to_text[ac], receivers[ac].received, delta);
+               }
+               fflush(stdout);
+               sleep(1);
        }
 
-       printf("Waiting for threads to finish\n");
+       printf("\nWaiting for threads to finish\n");
        /* Wait for all threads to finish */
        for (i=0; i < nr_sepoints + AC_QUEUES; i++) {
                sem_wait(&sem_thread_finished);
        }
+       printf("\n");
 
        save_results();
 
index 3c7b78fc55373d150547ce03283dc76fc0d367cc..b57d8b6e40004cbeb25a1295695739909f3df5a3 100644 (file)
 
 int ac_sockfd[AC_QUEUES];
 
+struct receiver {
+       unsigned received, last_received;
+} receivers[AC_QUEUES];
+
 
 void stopper()
 {
@@ -96,7 +100,8 @@ void* qhandler(void* queue)
 #ifdef DEBUG
                printf("%d",ac);
                fflush(stdout);
-#endif 
+#endif
+               receivers[ac].received++;
                while (sendto(ac_sockfd[ac], buff, mlen,0 ,(struct sockaddr*)&rem_addr, \
                        sizeof(rem_addr)) < 0){
                            if (errno == EINTR) continue;
@@ -109,7 +114,7 @@ void* qhandler(void* queue)
 
 int main(int argc, char *argv[])
 {
-       int i,rc;
+       int ac,rc;
        pthread_attr_t attr;
        pthread_t thread;
 
@@ -125,15 +130,23 @@ int main(int argc, char *argv[])
                exit(1);
        }
 
-       for (i = 0; i < AC_QUEUES; i++) {
-               ac_sockfd[i] = create_ac_socket(i);
-               rc = pthread_create(&thread, &attr, qhandler, (void*) i); 
+       for (ac = 0; ac < AC_QUEUES; ac++) {
+               ac_sockfd[ac] = create_ac_socket(ac);
+               rc = pthread_create(&thread, &attr, qhandler, (void*) ac); 
 
        }
        
        while (1) {
-               sleep(100000);
+               printf("\r");
+               for (ac = 0; ac<AC_QUEUES; ac++) {
+                       int delta = receivers[ac].received - receivers[ac].last_received;
+                       receivers[ac].last_received = receivers[ac].received;
+                       printf("%s: %5d (+%4d)  ", ac_to_text[ac], receivers[ac].received, delta);
+               }
+               fflush(stdout);
+               sleep(1);
        }
+       printf("\n");
 
        return 0;