]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/netapi.git/commitdiff
dpi demo updates to collect memory stats per core/thread,
authorTinku Mannan <tmannan@ti.com>
Mon, 25 Aug 2014 18:21:49 +0000 (14:21 -0400)
committerTinku Mannan <tmannan@ti.com>
Mon, 25 Aug 2014 19:20:19 +0000 (15:20 -0400)
makefile update to install gif files.

ti/runtime/netapi/demo/src/navl_wrapper.c
ti/runtime/netapi/demo/src/navl_wrapper.h
ti/runtime/netapi/demo/src/transport_dpi_demo.c
ti/runtime/netapi/makefile_armv7

index efd2dc43874dc06f8a3eaf9fe0b16812328c26fd..8e26cc4ff5c0295c31d8af3a5e479de30172a366 100755 (executable)
@@ -72,7 +72,7 @@ static int   navl_wrapper_log_message(const char *level, const char *func, const
 
 static int navl_classify_callback(navl_handle_t handle, navl_result_t result, navl_state_t state, navl_conn_t conn, void *arg, int error);
 
-static void  navl_wrapper_mem_stat_print();
+static void  navl_wrapper_mem_stat_print(int threadId);
 
 /* external definitions */
 void bind_navl_externals();
@@ -195,7 +195,7 @@ navl_wrapper_init(int argc, char *argv[])
 
     for(j=0;j< NUM_FP_PROCS;j++)
         g_reader->stats_pkt[j] = NULL;
-    
+
     g_reader->stats_conns = 0;
 
     g_reader->running = 1;
@@ -233,12 +233,16 @@ navl_wrapper_init(int argc, char *argv[])
         }
         pShmEntry = hplib_shmGetEntry(pShmBase, APP_ENTRY_2);
         pDpiStats = (navl_global_dpi_stats*) pShmEntry;
+
+        pShmEntry = hplib_shmGetEntry(pShmBase, APP_ENTRY_3);
+        g_reader->stats_mem = (navl_wrapper_mem_stats_t*) pShmEntry;
     }
     else
     {
         printf("navl_wrapper_init: hplib_shmOpen failure\n");
         return NETAPI_ERR_NOMEM;
     }
+    
 
     /* EXTERNAL BINDINGS GO HERE */
     {
@@ -253,8 +257,6 @@ navl_wrapper_init(int argc, char *argv[])
             navl_free_local = navl_wrapper_free;
             navl_malloc_shared = navl_wrapper_malloc;
             navl_free_shared = navl_wrapper_free;
-
-            memset(g_reader->stats_mem, 0, sizeof(g_reader->stats_mem));
         }
     }
 
@@ -339,9 +341,14 @@ int navl_per_thread_init(uint32_t thread_num)
 
  /* fetch all the memory tag names */
     for (c = 0; c < NUM_MEM_CTX; c++)
-        navl_memory_ctx_name(g_reader->navl, c, g_reader->ctx_name[c], sizeof(g_reader->ctx_name[c]));
+        navl_memory_ctx_name(g_reader->navl, c, g_reader->stats_mem->ctx_name[thread_num-1][c],
+                            sizeof(g_reader->stats_mem->ctx_name[thread_num-1][c]));
+        //navl_memory_ctx_name(g_reader->navl, c, g_reader->ctx_name[c], sizeof(g_reader->ctx_name[c]));
     for (c = 0; c < NUM_MEM_OBJ; c++)
-        navl_memory_obj_name(g_reader->navl, c, g_reader->obj_name[c], sizeof(g_reader->obj_name[c]));
+        navl_memory_obj_name(g_reader->navl, c, g_reader->stats_mem->obj_name[thread_num-1][c],
+                            sizeof(g_reader->stats_mem->obj_name[thread_num-1][c]));
+
+        //navl_memory_obj_name(g_reader->navl, c, g_reader->obj_name[c], sizeof(g_reader->obj_name[c]));
 
     return 1;
 }
@@ -627,7 +634,7 @@ void navl_results(int fp_thread)
 
     printf("\n");
     if (g_reader->option_track_memory)
-        navl_wrapper_mem_stat_print();
+        navl_wrapper_mem_stat_print(fp_thread);
 
 
     if (pNavlCfg->alloc_curr != 0)
@@ -640,7 +647,7 @@ void navl_results(int fp_thread)
 }
 
 static void 
-navl_wrapper_mem_stat_print()
+navl_wrapper_mem_stat_print(int threadId)
 {
     int i, j;
     navl_wrapper_stat_t *stat;
@@ -649,21 +656,23 @@ navl_wrapper_mem_stat_print()
     printf("                                          Curr      Peak      Fail   \n");
     printf("-----------------------------------------------------------------------");
 
-    for (i = 0; i < g_reader->config_num_memctx; i++)
+    for (i = 0; i < NUM_MEM_CTX; i++)
     {
-        stat = &g_reader->stats_mem[i][0];
+        stat = &g_reader->stats_mem->mstats[threadId][i][0];
         if (stat->peak == 0)
         continue;
 
-        printf("\n\t%s\n", g_reader->ctx_name[i]);
+        printf("\n\t%s\n", g_reader->stats_mem->ctx_name[threadId][i]);
+        //printf("\n\t%s\n", g_reader->ctx_name[i]);
 
-        for (j = g_reader->config_num_memobj - 1; j >= 0; j--)
+        for (j = NUM_MEM_OBJ - 1; j >= 0; j--)
         {
-            navl_wrapper_stat_t *stat = &g_reader->stats_mem[i][j];
+            navl_wrapper_stat_t *stat = &g_reader->stats_mem->mstats[threadId][i][j];
             if (stat->peak == 0)
             continue;
+            name = j ? g_reader->stats_mem->obj_name[threadId][j] : (char *)"other";
 
-            name = j ? g_reader->obj_name[j] : (char *)"other";
+            //name = j ? g_reader->obj_name[j] : (char *)"other";
 
             if (stat->peak || stat->fail)
             printf("\t\t%-20s%10" PRIu64 "%10" PRIu64 "%10" PRIu64 "\n", name, stat->curr, stat->peak, stat->fail);
@@ -676,7 +685,7 @@ navl_wrapper_mem_stat_print()
 void navl_results2(int fp_thread)
 {
     int idx;
-    int i;
+    int i,j;
     uint64_t total_packets, total_bytes;
     void* pShmEntry;
     void* pShmBase;
@@ -685,6 +694,8 @@ void navl_results2(int fp_thread)
     navl_wrapper_pkt_stat_t *pStats1;
     navl_wrapper_pkt_stat_t *pStats2;
     navl_mcb_t g_reader;
+    navl_wrapper_stat_t *stat;
+    char *name;
 
     pShmBase = hplib_shmOpen();
     if (pShmBase)
@@ -697,6 +708,9 @@ void navl_results2(int fp_thread)
     
         g_reader.stats_pkt[1] = pTemp + sizeof(navl_wrapper_cfg_info_t) +
                 (sizeof(navl_wrapper_pkt_stat_t)*pNavlCfg->num_protocols);
+
+        pTemp = hplib_shmGetEntry(pShmBase, APP_ENTRY_3);
+        g_reader.stats_mem = (navl_wrapper_mem_stats_t*) pTemp;
     }
     total_packets = 0;
     total_bytes = 0;
@@ -741,13 +755,39 @@ void navl_results2(int fp_thread)
     else
         printf("\n %" PRIu64 " packets captured (%" PRIu64 " bytes)\n", total_packets, total_bytes);
 
-#if 0
-    if (g_reader.stats_conns)
-        printf(" %" PRIu64 " connections tracked\n", g_reader.stats_conns);
 
     printf("\n");
     //if (g_reader.option_track_memory)
-        navl_wrapper_mem_stat_print();
+    printf("                                          Curr      Peak      Fail   \n");
+    printf("-----------------------------------------------------------------------");
+
+    for (i = 0; i < NUM_MEM_CTX; i++)
+    {
+        stat = &g_reader.stats_mem->mstats[fp_thread][i][0];
+        if (stat->peak == 0)
+        continue;
+
+        printf("\n\t%s\n", g_reader.stats_mem->ctx_name[fp_thread][i]);
+        //printf("\n\t%s\n", g_reader->ctx_name[i]);
+
+        for (j = NUM_MEM_OBJ - 1; j >= 0; j--)
+        {
+            navl_wrapper_stat_t *stat = &g_reader.stats_mem->mstats[fp_thread][i][j];
+            if (stat->peak == 0)
+            continue;
+            name = j ? g_reader.stats_mem->obj_name[fp_thread][j] : (char *)"other";
+
+            //name = j ? g_reader->obj_name[j] : (char *)"other";
+
+            if (stat->peak || stat->fail)
+            printf("\t\t%-20s%10" PRIu64 "%10" PRIu64 "%10" PRIu64 "\n", name, stat->curr, stat->peak, stat->fail);
+        }
+    }
+    printf("\n\n");
+
+#if 0
+    if (g_reader.stats_conns)
+        printf(" %" PRIu64 " connections tracked\n", g_reader.stats_conns);
 
     if (pNavlCfg->alloc_curr != 0)
         printf("Bytes not freed: %" PRIi64 "\n", pNavlCfg->alloc_curr);
@@ -778,6 +818,7 @@ static void *navl_wrapper_malloc(size_t size)
     int ctx_tag, obj_tag;
     unsigned long t1;
     unsigned long t2;
+   int threadId =Osal_nwalGetProcId();
     pDpiStats->malloc_inst+=1;
     pDpiStats->malloc_bytes+=size;
     t1=netapi_timing_start();
@@ -810,7 +851,7 @@ static void *navl_wrapper_malloc(size_t size)
         return NULL;
     }
 
-    stat_mem = &g_reader->stats_mem[ctx_tag][obj_tag];
+    stat_mem = &g_reader->stats_mem->mstats[threadId][ctx_tag][obj_tag];
 
     /* check limits */
     if (!g_reader->option_limit_memory || (pNavlCfg->alloc_curr + size < g_reader->option_limit_memory))
@@ -842,13 +883,14 @@ navl_wrapper_free(void *p)
 {
     unsigned long t1;
     unsigned long t2;
+    int threadId =Osal_nwalGetProcId();
     pDpiStats->free_inst += 1;
     t1=netapi_timing_start();
     if (!p)
         return;
 
     memstamp_t *ptr = (memstamp_t *)((char *)p - offsetof(memstamp_t, mem));
-    navl_wrapper_stat_t *stat_mem = &g_reader->stats_mem[ptr->ctx_tag][ptr->obj_tag];
+    navl_wrapper_stat_t *stat_mem = &g_reader->stats_mem->mstats[threadId][ptr->ctx_tag][ptr->obj_tag];
 
     assert(p == ptr->mem);
 
@@ -879,6 +921,7 @@ navl_wrapper_log_message(const char *level, const char *func, const char *format
 void clear_pkt_stats()
 {
     int ret, i;
+    
 
     for (i=0;i < NUM_FP_PROCS;i++)
     {
index 086114aeed53b046c19f99ad0514c847c5d9366f..aba6f8e79078c52c02409cfbd29e50e28f474cf9 100755 (executable)
@@ -69,6 +69,8 @@ extern "C" {
 #define NUM_FP_PROCS 2
 
 #define MAX_PROTOCOLS 1500
+#define NUM_MEM_CTX 50
+#define NUM_MEM_OBJ 50
 
 #define MAX_BIN 10
 typedef struct 
@@ -140,10 +142,14 @@ typedef struct
     int64_t fail;
 } navl_wrapper_stat_t;
 
+typedef struct 
+{
+    navl_wrapper_stat_t mstats[NUM_FP_PROCS][NUM_MEM_CTX][NUM_MEM_OBJ];
+    char                    ctx_name[NUM_FP_PROCS][NUM_MEM_CTX][64];
+    char                    obj_name[NUM_FP_PROCS][NUM_MEM_OBJ][64];
+} navl_wrapper_mem_stats_t;
 
 
-#define NUM_MEM_CTX 50
-#define NUM_MEM_OBJ 50
 
 /* instance variables */
 typedef struct {
@@ -174,10 +180,10 @@ typedef struct {
     /* statistics */
 //#define NUM_MEM_CTX 50
 //#define NUM_MEM_OBJ 50
-    navl_wrapper_stat_t    stats_mem[NUM_MEM_CTX][NUM_MEM_OBJ];
-    char                    ctx_name[NUM_MEM_CTX][64];
-    char                    obj_name[NUM_MEM_OBJ][64];
-    navl_wrapper_pkt_stat_t *stats_pkt[2];
+    navl_wrapper_mem_stats_t    *stats_mem;
+    //char                    ctx_name[NUM_MEM_CTX][64];
+    //char                    obj_name[NUM_MEM_OBJ][64];
+    navl_wrapper_pkt_stat_t *stats_pkt[NUM_FP_PROCS];
     uint64_t                stats_conns;
 
     /* misc vars */
index f90ceb14400a355e0cb9cf7d5d1ff43c91055f55..08f1f3e47693bd0b41a089debed1915cb69587b9 100755 (executable)
@@ -71,6 +71,9 @@ navl_wrapper_cfg_info_t *pNavlCfg;
 navl_wrapper_pkt_stat_t *pStats1;
 navl_wrapper_pkt_stat_t *pStats2;
 navl_global_dpi_stats *pGlobDpiStats;
+navl_wrapper_mem_stats_t *pNavlMemStats;
+
+
 void* pTemp;
 
 
@@ -634,6 +637,7 @@ int main(int argc, char **argv)
             printf("main: initRm() returned error\n");
             exit(1);
         }
+
         signal(SIGINT,netTest_utilMySig);
         CPU_ZERO( &cpu_set);
         CPU_SET( 0, &cpu_set);
@@ -683,6 +687,19 @@ int main(int argc, char **argv)
                 memset(pGlobDpiStats, 0, sizeof(navl_global_dpi_stats));
                 pGlobDpiStats->min_time=100000000;
             }
+            if (hplib_shmAddEntry(pShmBase, sizeof(navl_wrapper_stat_t)* (NUM_FP_PROCS *NUM_MEM_CTX * NUM_MEM_OBJ),
+                                  APP_ENTRY_3) != hplib_OK)
+            {
+                printf("main:  hplib_shmAddEntry failure\n");
+                return -1;
+            }
+            else
+            {
+                pShmEntry = hplib_shmGetEntry(pShmBase, APP_ENTRY_3);
+                pNavlMemStats = (navl_wrapper_mem_stats_t*) pShmEntry;
+                memset(pNavlMemStats, 0, sizeof(navl_wrapper_mem_stats_t));
+            }
+            
         }
         else
         {
index 2a34e256e94e0f659a422af2ac67fd2cfea7fbce..72a8c9c3fe6dc5175b00b691dad4614effeceba5 100755 (executable)
@@ -128,9 +128,14 @@ installdemo:
        install -c -m 755 demo/demo_setup_files/dpicgi1.sh               $(SYSCONFDIR)/transportnetlib/dpi_demo
        install -c -m 755 demo/demo_setup_files/dpicgi2.sh               $(SYSCONFDIR)/transportnetlib/dpi_demo
        install -c -m 755 demo/demo_setup_files/dpicgi3.sh               $(SYSCONFDIR)/transportnetlib/dpi_demo
+       install -c -m 755 demo/demo_setup_files/dpicgi4.sh               $(SYSCONFDIR)/transportnetlib/dpi_demo
+       install -c -m 755 demo/demo_setup_files/dpicgi5.sh               $(SYSCONFDIR)/transportnetlib/dpi_demo
        install -c demo/demo_setup_files/stats1.awk                      $(SYSCONFDIR)/transportnetlib/dpi_demo
        install -c demo/demo_setup_files/stats2.awk                      $(SYSCONFDIR)/transportnetlib/dpi_demo
        install -c demo/demo_setup_files/stats3.awk                      $(SYSCONFDIR)/transportnetlib/dpi_demo
+       install -c demo/demo_setup_files/stats4.awk                      $(SYSCONFDIR)/transportnetlib/dpi_demo
+       install -c demo/demo_setup_files/tilogo.gif                      $(SYSCONFDIR)/transportnetlib/dpi_demo
+       install -c demo/demo_setup_files/titagline.gif                   $(SYSCONFDIR)/transportnetlib/dpi_demo
 
 # Make rule to create tests
 tests: