mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 05:09:12 +00:00
Profiler: Let the user ignore context switches
Now that the profiling timer is independent from the scheduler the user will get quite a few CPU samples from "within" the scheduler. These events are less useful when just profiling a user-mode process rather than the whole system. This patch adds an option to Profiler to hide these events.
This commit is contained in:
parent
c534f176bc
commit
d6b3513aab
Notes:
sideshowbarker
2024-07-18 18:11:58 +09:00
Author: https://github.com/gunnarbeutner
Commit: d6b3513aab
Pull-request: https://github.com/SerenityOS/serenity/pull/7090
Reviewed-by: https://github.com/awesomekling
4 changed files with 34 additions and 0 deletions
|
@ -99,6 +99,12 @@ void Profile::rebuild_tree()
|
|||
if (!process_filter_contains(event.pid, event.timestamp))
|
||||
continue;
|
||||
|
||||
if (!m_show_scheduler && !event.frames.is_empty()) {
|
||||
auto top_frame = event.frames[event.frames.size() - 1];
|
||||
if (top_frame.symbol == "Kernel::Scheduler::yield()")
|
||||
continue;
|
||||
}
|
||||
|
||||
m_filtered_event_indices.append(event_index);
|
||||
|
||||
if (event.type == "malloc" && !live_allocations.contains(event.ptr))
|
||||
|
@ -450,6 +456,15 @@ void Profile::set_show_percentages(bool show_percentages)
|
|||
m_show_percentages = show_percentages;
|
||||
}
|
||||
|
||||
void Profile::set_show_scheduler(bool show_scheduler)
|
||||
{
|
||||
if (m_show_scheduler == show_scheduler)
|
||||
return;
|
||||
m_show_scheduler = show_scheduler;
|
||||
// FIXME: This only works when kernel symbols are available
|
||||
rebuild_tree();
|
||||
}
|
||||
|
||||
void Profile::set_disassembly_index(const GUI::ModelIndex& index)
|
||||
{
|
||||
if (m_disassembly_index == index)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue