trace: remove parent_levels session argument

The argument was originally designated to restrict the reach of the
trace monitor but the idea remained unimplemented. It is now superseded
by the use of the trace-session label as trace-subject filter.

Issue #847
This commit is contained in:
Norman Feske
2023-12-04 14:22:49 +01:00
parent 12b89852e0
commit f57da7e645
14 changed files with 27 additions and 46 deletions

View File

@ -35,13 +35,11 @@ struct Genode::Trace::Connection : Genode::Connection<Genode::Trace::Session>,
* *
* \param ram_quota RAM donated for tracing purposes * \param ram_quota RAM donated for tracing purposes
* \param arg_buffer_size session argument-buffer size * \param arg_buffer_size session argument-buffer size
* \param parent_levels number of parent levels to trace
*/ */
Connection(Env &env, size_t ram_quota, size_t arg_buffer_size, unsigned parent_levels) Connection(Env &env, size_t ram_quota, size_t arg_buffer_size)
: :
Genode::Connection<Session>(env, Label(), Ram_quota { 10*1024 + ram_quota }, Genode::Connection<Session>(env, Label(), Ram_quota { 10*1024 + ram_quota },
Args("arg_buffer_size=", arg_buffer_size, ", " Args("arg_buffer_size=", arg_buffer_size)),
"parent_levels=", parent_levels)),
Session_client(env.rm(), cap()) Session_client(env.rm(), cap())
{ } { }

View File

@ -59,8 +59,7 @@ struct Migrate
Timer::Connection timer { env }; Timer::Connection timer { env };
Migrate_thread thread { env }; Migrate_thread thread { env };
Trace::Connection trace { env, 15 * 4096 /* RAM quota */, Trace::Connection trace { env, 15 * 4096 /* RAM quota */,
11 * 4096 /* ARG_BUFFER RAM quota */, 11 * 4096 /* ARG_BUFFER RAM quota */ };
0 /* parent levels */ };
Signal_handler<Migrate> timer_handler { env.ep(), *this, Signal_handler<Migrate> timer_handler { env.ep(), *this,
&Migrate::check_traces }; &Migrate::check_traces };

View File

@ -8,7 +8,6 @@
<config verbose="yes" <config verbose="yes"
session_ram="90M" session_ram="90M"
session_arg_buffer="1M" session_arg_buffer="1M"
session_parent_levels="3"
period_sec="10" period_sec="10"
default_policy="null" default_policy="null"
default_buffer="4K"> default_buffer="4K">

View File

@ -114,8 +114,7 @@ class Trace_recorder::Monitor
Timer::Connection _timer { _env }; Timer::Connection _timer { _env };
Trace::Connection _trace { _env, Trace::Connection _trace { _env,
TRACE_SESSION_RAM, TRACE_SESSION_RAM,
TRACE_SESSION_ARG_BUFFER, TRACE_SESSION_ARG_BUFFER };
0 };
Signal_handler<Monitor> _timeout_handler { _env.ep(), Signal_handler<Monitor> _timeout_handler { _env.ep(),
*this, *this,

View File

@ -383,7 +383,7 @@ struct Vfs_trace::Local_factory : File_system_factory
} }
Local_factory(Vfs::Env &env, Xml_node config) Local_factory(Vfs::Env &env, Xml_node config)
: _env(env), _trace(env.env(), _config_session_ram(config), 512*1024, 0) : _env(env), _trace(env.env(), _config_session_ram(config), 512*1024)
{ {
_trace.for_each_subject_info([&] (Trace::Subject_id const id, _trace.for_each_subject_info([&] (Trace::Subject_id const id,
Trace::Subject_info const &info) { Trace::Subject_info const &info) {

View File

@ -47,7 +47,7 @@
<start name="trace_logger"> <start name="trace_logger">
<resource name="RAM" quantum="80M"/> <resource name="RAM" quantum="80M"/>
<config verbose="yes" priority="no" sc_time="no" session_ram="10M" session_parent_levels="1" session_arg_buffer="64K" period_sec="3" default_policy="null" default_buffer="1K"> <config verbose="yes" priority="no" sc_time="no" session_ram="10M" session_arg_buffer="64K" period_sec="3" default_policy="null" default_buffer="1K">
<policy label_prefix="cpu_burner" thread="ep"/> <policy label_prefix="cpu_burner" thread="ep"/>

View File

@ -11,7 +11,6 @@
<config verbose="no" <config verbose="no"
session_ram="90M" session_ram="90M"
session_arg_buffer="1M" session_arg_buffer="1M"
session_parent_levels="1"
period_sec="10" period_sec="10"
default_policy="null" default_policy="null"
default_buffer="8K"> default_buffer="8K">

View File

@ -282,17 +282,12 @@ struct App::Main
{ {
Env &_env; Env &_env;
enum {
PARENT_LEVELS = 0
};
size_t arg_buffer_ram { 12 * 4096 }; /* ~ 190 trace Subject_info objects */ size_t arg_buffer_ram { 12 * 4096 }; /* ~ 190 trace Subject_info objects */
size_t trace_ram_quota { arg_buffer_ram + 4 * 4096 }; size_t trace_ram_quota { arg_buffer_ram + 4 * 4096 };
Reconstructible<Trace::Connection> _trace { _env, Reconstructible<Trace::Connection> _trace { _env,
trace_ram_quota, trace_ram_quota,
arg_buffer_ram, arg_buffer_ram };
PARENT_LEVELS };
static uint64_t _default_period_ms() { return 5000; } static uint64_t _default_period_ms() { return 5000; }
@ -369,7 +364,7 @@ void App::Main::_handle_period()
_trace_subject_registry.flush(*_trace, _heap); _trace_subject_registry.flush(*_trace, _heap);
_trace.destruct(); _trace.destruct();
_trace.construct(_env, trace_ram_quota, arg_buffer_ram, PARENT_LEVELS); _trace.construct(_env, trace_ram_quota, arg_buffer_ram);
} }

View File

@ -18,7 +18,6 @@ policy.label:
! sc_time="no" ! sc_time="no"
! session_ram="10M" ! session_ram="10M"
! session_arg_buffer="4K" ! session_arg_buffer="4K"
! session_parent_levels="0"
! period_sec="5" ! period_sec="5"
! default_policy="null" ! default_policy="null"
! default_buffer="4K"> ! default_buffer="4K">
@ -53,9 +52,6 @@ This is a short description of the tags and attributes:
:config.session_arg_buffer: :config.session_arg_buffer:
Optional. Size of the trace sessions argument buffer. Optional. Size of the trace sessions argument buffer.
:config.session_parent_levels:
Optional. Number of parent levels to trace.
:config.period_sec: :config.period_sec:
Optional. Length of processing/export interval in seconds. Optional. Length of processing/export interval in seconds.

View File

@ -41,7 +41,6 @@
<xs:attribute name="sc_time" type="Boolean" /> <xs:attribute name="sc_time" type="Boolean" />
<xs:attribute name="session_arg_buffer" type="Number_of_bytes" /> <xs:attribute name="session_arg_buffer" type="Number_of_bytes" />
<xs:attribute name="session_ram" type="Number_of_bytes" /> <xs:attribute name="session_ram" type="Number_of_bytes" />
<xs:attribute name="session_parent_levels" type="xs:nonNegativeInteger" />
<xs:attribute name="default_policy" type="Trace_policy_name" /> <xs:attribute name="default_policy" type="Trace_policy_name" />
<xs:attribute name="period_sec" type="Seconds" /> <xs:attribute name="period_sec" type="Seconds" />
<xs:attribute name="default_buffer" type="Number_of_bytes" /> <xs:attribute name="default_buffer" type="Number_of_bytes" />

View File

@ -43,7 +43,6 @@ class Main
{ {
size_t session_ram; size_t session_ram;
size_t session_arg_buffer; size_t session_arg_buffer;
unsigned session_parent_levels;
bool verbose; bool verbose;
bool prio; bool prio;
bool sc_time; bool sc_time;
@ -57,8 +56,7 @@ class Main
Trace::Connection _trace { _env, Trace::Connection _trace { _env,
_config.session_ram, _config.session_ram,
_config.session_arg_buffer, _config.session_arg_buffer };
_config.session_parent_levels };
Timer::Connection _timer { _env }; Timer::Connection _timer { _env };
@ -235,7 +233,6 @@ Main::Config Main::Config::from_xml(Xml_node const &config)
Number_of_bytes(1024*1024)), Number_of_bytes(1024*1024)),
.session_arg_buffer = config.attribute_value("session_arg_buffer", .session_arg_buffer = config.attribute_value("session_arg_buffer",
Number_of_bytes(1024*4)), Number_of_bytes(1024*4)),
.session_parent_levels = config.attribute_value("session_parent_levels", 0u),
.verbose = config.attribute_value("verbose", false), .verbose = config.attribute_value("verbose", false),
.prio = config.attribute_value("priority", false), .prio = config.attribute_value("priority", false),
.sc_time = config.attribute_value("sc_time", false), .sc_time = config.attribute_value("sc_time", false),

View File

@ -156,7 +156,7 @@ struct App::Main
{ {
Env &_env; Env &_env;
Trace::Connection _trace { _env, 128*1024, 32*1024, 0 }; Trace::Connection _trace { _env, 128*1024, 32*1024 };
Reporter _reporter { _env, "trace_subjects", "trace_subjects", 64*1024 }; Reporter _reporter { _env, "trace_subjects", "trace_subjects", 64*1024 };

View File

@ -57,7 +57,7 @@ class Cpu::Trace
_arg_quota += upgrade; _arg_quota += upgrade;
_trace.destruct(); _trace.destruct();
_trace.construct(_env, _ram_quota, _arg_quota, 0 /* parent levels */); _trace.construct(_env, _ram_quota, _arg_quota);
/* /*
* Explicitly re-trigger import of subjects. Otherwise * Explicitly re-trigger import of subjects. Otherwise

View File

@ -146,7 +146,7 @@ struct Test_out_of_metadata
try { try {
Trace::Connection trace(env, sizeof(subject_ids) + 4096, Trace::Connection trace(env, sizeof(subject_ids) + 4096,
sizeof(subject_ids), 0); sizeof(subject_ids));
/* we should never arrive here */ /* we should never arrive here */
struct Unexpectedly_got_no_exception{}; struct Unexpectedly_got_no_exception{};
@ -168,7 +168,7 @@ struct Test_out_of_metadata
Test_thread thread5 { env, "test-thread5" }; Test_thread thread5 { env, "test-thread5" };
Trace::Connection trace(env, sizeof(subject_ids) + 5*4096, Trace::Connection trace(env, sizeof(subject_ids) + 5*4096,
sizeof(subject_ids), 0); sizeof(subject_ids));
trace.subjects(subject_ids, MAX_SUBJECT_IDS); trace.subjects(subject_ids, MAX_SUBJECT_IDS);
/* we should never arrive here */ /* we should never arrive here */
@ -187,7 +187,7 @@ struct Test_tracing
{ {
Env &env; Env &env;
Attached_rom_dataspace config { env, "config" }; Attached_rom_dataspace config { env, "config" };
Trace::Connection trace { env, 1024*1024, 64*1024, 0 }; Trace::Connection trace { env, 1024*1024, 64*1024 };
Timer::Connection timer { env }; Timer::Connection timer { env };
Test_thread::Name thread_name { "test-thread" }; Test_thread::Name thread_name { "test-thread" };
Test_thread thread { env, thread_name }; Test_thread thread { env, thread_name };