Commit 6c7d9b54 authored by Farah Charab's avatar Farah Charab Committed by Commit Bot

Tracing: Add capability to trace the priority of the tasks executed.

Change-Id: I0ab635c48c63ff68a8aeca1d725904d0f4eb56b9
Reviewed-on: https://chromium-review.googlesource.com/1053774Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Commit-Queue: Farah Charab <farahcharab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#558361}
parent 5ef2f14a
...@@ -203,6 +203,13 @@ const char* OptionalTaskDescriptionToString( ...@@ -203,6 +203,13 @@ const char* OptionalTaskDescriptionToString(
return MainThreadTaskQueue::NameForQueueType(desc->queue_type.value()); return MainThreadTaskQueue::NameForQueueType(desc->queue_type.value());
} }
const char* OptionalTaskPriorityToString(
base::Optional<TaskQueue::QueuePriority> priority) {
if (!priority)
return nullptr;
return TaskQueue::PriorityToString(priority.value());
}
bool IsUnconditionalHighPriorityInputEnabled() { bool IsUnconditionalHighPriorityInputEnabled() {
return base::FeatureList::IsEnabled(kHighPriorityInput); return base::FeatureList::IsEnabled(kHighPriorityInput);
} }
...@@ -528,6 +535,12 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly( ...@@ -528,6 +535,12 @@ MainThreadSchedulerImpl::MainThreadOnly::MainThreadOnly(
main_thread_scheduler_impl, main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_, &main_thread_scheduler_impl->tracing_controller_,
OptionalTaskDescriptionToString), OptionalTaskDescriptionToString),
task_priority_for_tracing(
base::nullopt,
"Scheduler.TaskPriority",
main_thread_scheduler_impl,
&main_thread_scheduler_impl->tracing_controller_,
OptionalTaskPriorityToString),
virtual_time_policy(VirtualTimePolicy::kAdvance), virtual_time_policy(VirtualTimePolicy::kAdvance),
virtual_time_pause_count(0), virtual_time_pause_count(0),
max_virtual_time_task_starvation_count(0), max_virtual_time_task_starvation_count(0),
...@@ -2426,6 +2439,11 @@ void MainThreadSchedulerImpl::OnTaskStarted(MainThreadTaskQueue* queue, ...@@ -2426,6 +2439,11 @@ void MainThreadSchedulerImpl::OnTaskStarted(MainThreadTaskQueue* queue,
queue queue
? base::Optional<MainThreadTaskQueue::QueueType>(queue->queue_type()) ? base::Optional<MainThreadTaskQueue::QueueType>(queue->queue_type())
: base::nullopt}; : base::nullopt};
main_thread_only().task_priority_for_tracing =
queue
? base::Optional<TaskQueue::QueuePriority>(queue->GetQueuePriority())
: base::nullopt;
} }
void MainThreadSchedulerImpl::OnTaskCompleted( void MainThreadSchedulerImpl::OnTaskCompleted(
...@@ -2445,6 +2463,9 @@ void MainThreadSchedulerImpl::OnTaskCompleted( ...@@ -2445,6 +2463,9 @@ void MainThreadSchedulerImpl::OnTaskCompleted(
thread_time); thread_time);
main_thread_only().task_description_for_tracing = base::nullopt; main_thread_only().task_description_for_tracing = base::nullopt;
// Unset the state of |task_priority_for_tracing|.
main_thread_only().task_priority_for_tracing = base::nullopt;
RecordTaskUkm(queue, task, start, end, thread_time); RecordTaskUkm(queue, task, start, end, thread_time);
} }
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "third_party/blink/public/platform/scheduler/web_main_thread_scheduler.h" #include "third_party/blink/public/platform/scheduler/web_main_thread_scheduler.h"
#include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/platform_export.h"
#include "third_party/blink/renderer/platform/scheduler/base/task_queue.h"
#include "third_party/blink/renderer/platform/scheduler/base/task_time_observer.h" #include "third_party/blink/renderer/platform/scheduler/base/task_time_observer.h"
#include "third_party/blink/renderer/platform/scheduler/child/idle_canceled_delayed_task_sweeper.h" #include "third_party/blink/renderer/platform/scheduler/child/idle_canceled_delayed_task_sweeper.h"
#include "third_party/blink/renderer/platform/scheduler/child/idle_helper.h" #include "third_party/blink/renderer/platform/scheduler/child/idle_helper.h"
...@@ -723,6 +724,10 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl ...@@ -723,6 +724,10 @@ class PLATFORM_EXPORT MainThreadSchedulerImpl
TraceableState<base::Optional<TaskDescriptionForTracing>, TraceableState<base::Optional<TaskDescriptionForTracing>,
kTracingCategoryNameInfo> kTracingCategoryNameInfo>
task_description_for_tracing; // Don't use except for tracing. task_description_for_tracing; // Don't use except for tracing.
TraceableState<
base::Optional<base::sequence_manager::TaskQueue::QueuePriority>,
kTracingCategoryNameInfo>
task_priority_for_tracing; // Only used for tracing.
base::ObserverList<VirtualTimeObserver> virtual_time_observers; base::ObserverList<VirtualTimeObserver> virtual_time_observers;
base::Time initial_virtual_time; base::Time initial_virtual_time;
base::TimeTicks initial_virtual_time_ticks; base::TimeTicks initial_virtual_time_ticks;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment