return;
}
-void StreamTcpReassembleMemuseCounter(ThreadVars *tv, TcpReassemblyThreadCtx *rtv)
+uint64_t StreamTcpReassembleMemuseGlobalCounter(void)
{
uint64_t smemuse = SC_ATOMIC_GET(ra_memuse);
- if (tv != NULL && rtv != NULL)
- SCPerfCounterSetUI64(tv, rtv->counter_tcp_reass_memuse, smemuse);
- return;
+ return smemuse;
}
/**
SCMutexInit(&segment_pool_memuse_mutex, NULL);
SCMutexInit(&segment_pool_cnt_mutex, NULL);
#endif
+
+ SCPerfTVRegisterGlobalCounter("tcp.reassembly_memuse",
+ StreamTcpReassembleMemuseGlobalCounter);
return 0;
}
}
}
- StreamTcpReassembleMemuseCounter(tv, ra_ctx);
SCReturnInt(0);
}
uint16_t counter_tcp_segment_memcap;
/** number of streams that stop reassembly because their depth is reached */
uint16_t counter_tcp_stream_depth;
- /** account memory usage for the reassembly portion of the stream engine */
- uint16_t counter_tcp_reass_memuse;
/** count number of streams with a unrecoverable stream gap (missing pkts) */
uint16_t counter_tcp_reass_gap;
/** account memory usage by suricata to handle HTTP protocol (not counting
static uint64_t ssn_pool_cnt = 0; /** counts ssns, protected by ssn_pool_mutex */
#endif
+uint64_t StreamTcpReassembleMemuseGlobalCounter(void);
SC_ATOMIC_DECLARE(uint64_t, st_memuse);
/* stream engine running in "inline" mode. */
SC_PERF_TYPE_UINT64);
stt->ra_ctx->counter_tcp_stream_depth = SCPerfTVRegisterCounter("tcp.stream_depth_reached", tv,
SC_PERF_TYPE_UINT64);
- stt->ra_ctx->counter_tcp_reass_memuse = SCPerfTVRegisterCounter("tcp.reassembly_memuse", tv,
- SC_PERF_TYPE_UINT64);
stt->ra_ctx->counter_tcp_reass_gap = SCPerfTVRegisterCounter("tcp.reassembly_gap", tv,
SC_PERF_TYPE_UINT64);
/** \fixme Find a better place in 2.1 as it is linked with app layer */