X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer%2Fconsumer-timer.cpp;h=8dae11fa2d5b465ccc3dab61f2aed7b948ab518a;hb=319dcddc7409961e156af76666fe70d31baec55a;hp=51fa1687e9359a2d0c9a09e77b4573e8dce6e0ce;hpb=1c9a0b0e83c7e073c4e576c0bed95de335b0e502;p=lttng-tools.git diff --git a/src/common/consumer/consumer-timer.cpp b/src/common/consumer/consumer-timer.cpp index 51fa1687e..8dae11fa2 100644 --- a/src/common/consumer/consumer-timer.cpp +++ b/src/common/consumer/consumer-timer.cpp @@ -10,15 +10,15 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include typedef int (*sample_positions_cb)(struct lttng_consumer_stream *stream); typedef int (*get_consumed_cb)(struct lttng_consumer_stream *stream, @@ -637,20 +637,18 @@ end: return ret; } -/* - * Execute action on a monitor timer. - */ -static -void monitor_timer(struct lttng_consumer_channel *channel) +/* Sample and send channel buffering statistics to the session daemon. */ +void sample_and_send_channel_buffer_stats(struct lttng_consumer_channel *channel) { int ret; int channel_monitor_pipe = consumer_timer_thread_get_channel_monitor_pipe(); struct lttcomm_consumer_channel_monitor_msg msg = { .key = channel->key, + .session_id = channel->session_id, .lowest = 0, .highest = 0, - .total_consumed = 0, + .consumed_since_last_sample = 0, }; sample_positions_cb sample; get_consumed_cb get_consumed; @@ -684,9 +682,10 @@ void monitor_timer(struct lttng_consumer_channel *channel) if (ret) { return; } + msg.highest = highest; msg.lowest = lowest; - msg.total_consumed = total_consumed; + msg.consumed_since_last_sample = total_consumed - channel->last_consumed_size_sample_sent; /* * Writes performed here are assumed to be atomic which is only @@ -709,6 +708,7 @@ void monitor_timer(struct lttng_consumer_channel *channel) DBG("Sent channel monitoring sample for channel key %" PRIu64 ", (highest = %" PRIu64 ", lowest = %" PRIu64 ")", channel->key, msg.highest, msg.lowest); + channel->last_consumed_size_sample_sent = msg.consumed_since_last_sample; } } @@ -787,7 +787,7 @@ void *consumer_timer_thread(void *data) struct lttng_consumer_channel *channel; channel = (lttng_consumer_channel *) info.si_value.sival_ptr; - monitor_timer(channel); + sample_and_send_channel_buffer_stats(channel); } else if (signr == LTTNG_CONSUMER_SIG_EXIT) { LTTNG_ASSERT(CMM_LOAD_SHARED(consumer_quit)); goto end;