summaryrefslogtreecommitdiff
path: root/Userland/DevTools/Profiler/SamplesModel.cpp
diff options
context:
space:
mode:
authorGunnar Beutner <gbeutner@serenityos.org>2021-05-13 22:14:07 +0200
committerAndreas Kling <kling@serenityos.org>2021-05-14 00:35:57 +0200
commitc41f13f10b8a78c86aa193271dd702e2d9d043ef (patch)
treed0d2cd95c07b56ccfde20ae8b1fd31fcb1209364 /Userland/DevTools/Profiler/SamplesModel.cpp
parent8614d18956f90edb08c5057f8448493b4cd3315c (diff)
downloadserenity-c41f13f10b8a78c86aa193271dd702e2d9d043ef.zip
Kernel+Profiler: Track lost time between profiler timer ticks
We can lose profiling timer events for a few reasons, for example disabled interrupts or system slowness. This accounts for lost time between CPU samples by adding a field lost_samples to each profiling event which tracks how many samples were lost immediately preceding the event.
Diffstat (limited to 'Userland/DevTools/Profiler/SamplesModel.cpp')
-rw-r--r--Userland/DevTools/Profiler/SamplesModel.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Userland/DevTools/Profiler/SamplesModel.cpp b/Userland/DevTools/Profiler/SamplesModel.cpp
index ce8161d343..af23693c70 100644
--- a/Userland/DevTools/Profiler/SamplesModel.cpp
+++ b/Userland/DevTools/Profiler/SamplesModel.cpp
@@ -45,6 +45,8 @@ String SamplesModel::column_name(int column) const
return "TID";
case Column::ExecutableName:
return "Executable";
+ case Column::LostSamples:
+ return "Lost Samples";
case Column::InnermostStackFrame:
return "Innermost Frame";
default:
@@ -81,6 +83,10 @@ GUI::Variant SamplesModel::data(const GUI::ModelIndex& index, GUI::ModelRole rol
return (u32)event.timestamp;
}
+ if (index.column() == Column::LostSamples) {
+ return event.lost_samples;
+ }
+
if (index.column() == Column::InnermostStackFrame) {
return event.frames.last().symbol;
}