[lttng-dev] [LTTNG-TOOLS PATCH 6/9] Display discarded and lost events at destroy and stop
Julien Desfossez
jdesfossez at efficios.com
Mon Jul 13 11:28:06 EDT 2015
Signed-off-by: Julien Desfossez <jdesfossez at efficios.com>
---
src/bin/lttng/commands/destroy.c | 1 +
src/bin/lttng/commands/stop.c | 1 +
src/bin/lttng/utils.c | 46 ++++++++++++++++++++++++++++++++++++++++
src/bin/lttng/utils.h | 1 +
4 files changed, 49 insertions(+)
diff --git a/src/bin/lttng/commands/destroy.c b/src/bin/lttng/commands/destroy.c
index 3a6e3ef..01764d9 100644
--- a/src/bin/lttng/commands/destroy.c
+++ b/src/bin/lttng/commands/destroy.c
@@ -84,6 +84,7 @@ static int destroy_session(struct lttng_session *session)
ERR("%s", lttng_strerror(ret));
}
}
+ get_session_stats(session->name);
ret = lttng_destroy_session(session->name);
if (ret < 0) {
diff --git a/src/bin/lttng/commands/stop.c b/src/bin/lttng/commands/stop.c
index 5ac182b..ca048e5 100644
--- a/src/bin/lttng/commands/stop.c
+++ b/src/bin/lttng/commands/stop.c
@@ -156,6 +156,7 @@ static int stop_tracing(void)
ret = CMD_SUCCESS;
+ get_session_stats(session_name);
MSG("Tracing stopped for session %s", session_name);
if (lttng_opt_mi) {
ret = mi_print_session(session_name, 0);
diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c
index d62c4a1..f71043b 100644
--- a/src/bin/lttng/utils.c
+++ b/src/bin/lttng/utils.c
@@ -26,6 +26,7 @@
#include <signal.h>
#include <netinet/in.h>
#include <arpa/inet.h>
+#include <inttypes.h>
#include <common/error.h>
#include <common/utils.h>
@@ -249,3 +250,48 @@ error:
error_socket:
return ret;
}
+
+/*
+ * Get the discarded events and lost packet counts.
+ */
+void get_session_stats(const char *session_name)
+{
+ int count, nb_domains, i, j;
+ struct lttng_domain *domains = NULL;
+ struct lttng_channel *channels = NULL;
+ struct lttng_handle *handle = NULL;
+ uint64_t discarded = 0, lost = 0;
+
+ nb_domains = lttng_list_domains(session_name, &domains);
+ if (nb_domains < 0) {
+ goto end;
+ }
+ for (i = 0; i < nb_domains; i++) {
+ handle = lttng_create_handle(session_name, &domains[i]);
+ if (handle == NULL) {
+ goto end;
+ }
+ count = lttng_list_channels(handle, &channels);
+ for (j = 0; j < count; j++) {
+ discarded += channels[j].attr.discarded_events;
+ lost += channels[j].attr.lost_packets;
+ }
+ }
+ if (handle) {
+ lttng_destroy_handle(handle);
+ }
+
+ if (discarded > 0) {
+ MSG("[warning] %" PRIu64 " events discarded, please refer to "
+ "the documentation on channel configuration",
+ discarded);
+ }
+ if (lost > 0) {
+ MSG("[warning] %" PRIu64 " packets lost, please refer to "
+ "the documentation on channel configuration",
+ lost);
+ }
+
+end:
+ return;
+}
diff --git a/src/bin/lttng/utils.h b/src/bin/lttng/utils.h
index 42d7f1d..ef55799 100644
--- a/src/bin/lttng/utils.h
+++ b/src/bin/lttng/utils.h
@@ -42,5 +42,6 @@ void print_missing_domain(void)
int spawn_relayd(const char *pathname, int port);
int check_relayd(void);
+void get_session_stats(const char *session_name);
#endif /* _LTTNG_UTILS_H */
--
1.9.1
More information about the lttng-dev
mailing list