Commit c3a9a3c5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull tracing tool updates from Steven Rostedt:

 - Various clean ups and fixes to rtla (Real Time Linux Analysis)

* tag 'trace-tools-v5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  rtla: Remove procps-ng dependency
  rtla: Fix __set_sched_attr error message
  rtla: Minor grammar fix for rtla README
  rtla: Don't overwrite existing directory mode
  rtla: Avoid record NULL pointer dereference
  rtla/Makefile: Properly handle dependencies
parents 76bfd3de dada03db
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -17,9 +17,21 @@ DOC_MAN1 = $(addprefix $(OUTPUT),$(_DOC_MAN1))
RST2MAN_DEP	:= $(shell command -v rst2man 2>/dev/null)
RST2MAN_OPTS	+= --verbose

TEST_RST2MAN = $(shell sh -c "rst2man --version > /dev/null 2>&1 || echo n")

$(OUTPUT)%.1: %.rst
ifndef RST2MAN_DEP
	$(error "rst2man not found, but required to generate man pages")
	$(info ********************************************)
	$(info ** NOTICE: rst2man not found)
	$(info **)
	$(info ** Consider installing the latest rst2man from your)
	$(info ** distribution, e.g., 'dnf install python3-docutils' on Fedora,)
	$(info ** or from source:)
	$(info **)
	$(info **  https://docutils.sourceforge.io/docs/dev/repository.html )
	$(info **)
	$(info ********************************************)
	$(error NOTICE: rst2man required to generate man pages)
endif
	rst2man $(RST2MAN_OPTS) $< > $@

+38 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ $(call allow-override,LD_SO_CONF_PATH,/etc/ld.so.conf.d/)
$(call allow-override,LDCONFIG,ldconfig)

INSTALL	=	install
MKDIR	=	mkdir
FOPTS	:=	-flto=auto -ffat-lto-objects -fexceptions -fstack-protector-strong \
		-fasynchronous-unwind-tables -fstack-clash-protection
WOPTS	:= 	-Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized
@@ -31,7 +32,7 @@ TRACEFS_HEADERS := $$($(PKG_CONFIG) --cflags libtracefs)

CFLAGS	:=	-O -g -DVERSION=\"$(VERSION)\" $(FOPTS) $(MOPTS) $(WOPTS) $(TRACEFS_HEADERS)
LDFLAGS	:=	-ggdb
LIBS	:=	$$($(PKG_CONFIG) --libs libtracefs) -lprocps
LIBS	:=	$$($(PKG_CONFIG) --libs libtracefs)

SRC	:=	$(wildcard src/*.c)
HDR	:=	$(wildcard src/*.h)
@@ -57,6 +58,41 @@ else
DOCSRC	=	$(SRCTREE)/../../../Documentation/tools/rtla/
endif

LIBTRACEEVENT_MIN_VERSION = 1.5
LIBTRACEFS_MIN_VERSION = 1.3

TEST_LIBTRACEEVENT = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) libtraceevent > /dev/null 2>&1 || echo n")
ifeq ("$(TEST_LIBTRACEEVENT)", "n")
.PHONY: warning_traceevent
warning_traceevent:
	@echo "********************************************"
	@echo "** NOTICE: libtraceevent version $(LIBTRACEEVENT_MIN_VERSION) or higher not found"
	@echo "**"
	@echo "** Consider installing the latest libtraceevent from your"
	@echo "** distribution, e.g., 'dnf install libtraceevent' on Fedora,"
	@echo "** or from source:"
	@echo "**"
	@echo "**  https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ "
	@echo "**"
	@echo "********************************************"
endif

TEST_LIBTRACEFS = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) libtracefs > /dev/null 2>&1 || echo n")
ifeq ("$(TEST_LIBTRACEFS)", "n")
.PHONY: warning_tracefs
warning_tracefs:
	@echo "********************************************"
	@echo "** NOTICE: libtracefs version $(LIBTRACEFS_MIN_VERSION) or higher not found"
	@echo "**"
	@echo "** Consider installing the latest libtracefs from your"
	@echo "** distribution, e.g., 'dnf install libtracefs' on Fedora,"
	@echo "** or from source:"
	@echo "**"
	@echo "**  https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ "
	@echo "**"
	@echo "********************************************"
endif

.PHONY:	all
all:	rtla

@@ -68,7 +104,7 @@ static: $(OBJ)

.PHONY: install
install: doc_install
	$(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)
	$(MKDIR) -p $(DESTDIR)$(BINDIR)
	$(INSTALL) rtla -m 755 $(DESTDIR)$(BINDIR)
	$(STRIP) $(DESTDIR)$(BINDIR)/rtla
	@test ! -f $(DESTDIR)$(BINDIR)/osnoise || rm $(DESTDIR)$(BINDIR)/osnoise
+5 −8
Original line number Diff line number Diff line
RTLA: Real-Time Linux Analysis tools

The rtla is a meta-tool that includes a set of commands that
aims to analyze the real-time properties of Linux. But, instead of
testing Linux as a black box, rtla leverages kernel tracing
capabilities to provide precise information about the properties
and root causes of unexpected results.
The rtla meta-tool includes a set of commands that aims to analyze
the real-time properties of Linux. Instead of testing Linux as a black box,
rtla leverages kernel tracing capabilities to provide precise information
about the properties and root causes of unexpected results.

Installing RTLA

RTLA depends on some libraries and tools. More precisely, it depends on the
following libraries:
RTLA depends on the following libraries and tools:

 - libtracefs
 - libtraceevent
 - procps

It also depends on python3-docutils to compile man pages.

+3 −2
Original line number Diff line number Diff line
@@ -809,7 +809,7 @@ int osnoise_hist_main(int argc, char *argv[])
		retval = set_comm_sched_attr("osnoise/", &params->sched_param);
		if (retval) {
			err_msg("Failed to set sched parameters\n");
			goto out_hist;
			goto out_free;
		}
	}

@@ -819,7 +819,7 @@ int osnoise_hist_main(int argc, char *argv[])
		record = osnoise_init_trace_tool("osnoise");
		if (!record) {
			err_msg("Failed to enable the trace instance\n");
			goto out_hist;
			goto out_free;
		}

		if (params->events) {
@@ -869,6 +869,7 @@ int osnoise_hist_main(int argc, char *argv[])
out_hist:
	trace_events_destroy(&record->trace, params->events);
	params->events = NULL;
out_free:
	osnoise_free_histogram(tool->data);
out_destroy:
	osnoise_destroy_tool(record);
+5 −4
Original line number Diff line number Diff line
@@ -572,7 +572,7 @@ int osnoise_top_main(int argc, char **argv)
	retval = osnoise_top_apply_config(tool, params);
	if (retval) {
		err_msg("Could not apply config\n");
		goto out_top;
		goto out_free;
	}

	trace = &tool->trace;
@@ -580,14 +580,14 @@ int osnoise_top_main(int argc, char **argv)
	retval = enable_osnoise(trace);
	if (retval) {
		err_msg("Failed to enable osnoise tracer\n");
		goto out_top;
		goto out_free;
	}

	if (params->set_sched) {
		retval = set_comm_sched_attr("osnoise/", &params->sched_param);
		if (retval) {
			err_msg("Failed to set sched parameters\n");
			goto out_top;
			goto out_free;
		}
	}

@@ -597,7 +597,7 @@ int osnoise_top_main(int argc, char **argv)
		record = osnoise_init_trace_tool("osnoise");
		if (!record) {
			err_msg("Failed to enable the trace instance\n");
			goto out_top;
			goto out_free;
		}

		if (params->events) {
@@ -649,6 +649,7 @@ int osnoise_top_main(int argc, char **argv)
out_top:
	trace_events_destroy(&record->trace, params->events);
	params->events = NULL;
out_free:
	osnoise_free_top(tool->data);
	osnoise_destroy_tool(record);
	osnoise_destroy_tool(tool);
Loading