diff options
author | Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> | 2023-04-06 09:36:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-06 09:36:11 +0200 |
commit | 7a627296f0a032ea0d73989531f21096e1f295e9 (patch) | |
tree | b51658d24a31a4f64611f5bd10f3fd3c8c672906 | |
parent | b639744c3ab4cc8879731675d70264c7b1cb1f18 (diff) |
Fix LRU/Patricia/Automa stats in `ndpiReader` with multiple threads (#1934)
-rw-r--r-- | example/ndpiReader.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c index 6ac994802..fe2add266 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -3473,16 +3473,29 @@ static void printResults(u_int64_t processing_time_usec, u_int64_t setup_time_us cumulative_stats.num_dissector_calls += ndpi_thread_info[thread_id].workflow->stats.num_dissector_calls; /* LRU caches */ - for(i = 0; i < NDPI_LRUCACHE_MAX; i++) - ndpi_get_lru_cache_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &cumulative_stats.lru_stats[i]); + for(i = 0; i < NDPI_LRUCACHE_MAX; i++) { + struct ndpi_lru_cache_stats s; + ndpi_get_lru_cache_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &s); + cumulative_stats.lru_stats[i].n_insert += s.n_insert; + cumulative_stats.lru_stats[i].n_search += s.n_search; + cumulative_stats.lru_stats[i].n_found += s.n_found; + } /* Automas */ - for(i = 0; i < NDPI_AUTOMA_MAX; i++) - ndpi_get_automa_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &cumulative_stats.automa_stats[i]); + for(i = 0; i < NDPI_AUTOMA_MAX; i++) { + struct ndpi_automa_stats s; + ndpi_get_automa_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &s); + cumulative_stats.automa_stats[i].n_search += s.n_search; + cumulative_stats.automa_stats[i].n_found += s.n_found; + } /* Patricia trees */ - for(i = 0; i < NDPI_PTREE_MAX; i++) - ndpi_get_patricia_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &cumulative_stats.patricia_stats[i]); + for(i = 0; i < NDPI_PTREE_MAX; i++) { + struct ndpi_patricia_tree_stats s; + ndpi_get_patricia_stats(ndpi_thread_info[thread_id].workflow->ndpi_struct, i, &s); + cumulative_stats.patricia_stats[i].n_search += s.n_search; + cumulative_stats.patricia_stats[i].n_found += s.n_found; + } } if(cumulative_stats.total_wire_bytes == 0) |