Commit 46290e3f authored by Greg Kraynov's avatar Greg Kraynov Committed by Commit Bot

Trace scheduler/base independently.

It's getting moved to //base, so renderer.scheduler tracing
category is inappropriate.

Bug: 783309
Change-Id: I8280a218188f2de721f752f1c58cdf6555cb0943
Reviewed-on: https://chromium-review.googlesource.com/1052130Reviewed-by: default avatarGabriel Charette <gab@chromium.org>
Reviewed-by: default avatarBruce Dawson <brucedawson@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Commit-Queue: Greg Kraynov <kraynov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#557531}
parent 4cdea8db
......@@ -69,7 +69,7 @@ const char* const kFilteredEventGroupNames[] = {
"gpu", // 0x20
"input", // 0x40
"netlog", // 0x80
"renderer.scheduler", // 0x100
"sequence_manager", // 0x100
"toplevel", // 0x200
"v8", // 0x400
"disabled-by-default-cc.debug", // 0x800
......
......@@ -52,7 +52,7 @@ base::Optional<base::TimeDelta> RealTimeDomain::DelayTillNextTask(
return base::TimeDelta(); // Makes DoWork post an immediate continuation.
base::TimeDelta delay = next_run_time - now;
TRACE_EVENT1("renderer.scheduler", "RealTimeDomain::DelayTillNextTask",
TRACE_EVENT1("sequence_manager", "RealTimeDomain::DelayTillNextTask",
"delay_ms", delay.InMillisecondsF());
// The next task is sometime in the future. DoWork will make sure it gets
......
......@@ -7,12 +7,12 @@
#include <memory>
#include <utility>
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
#include "base/trace_event/blame_context.h"
#include "third_party/blink/renderer/platform/scheduler/base/task_queue_manager_impl.h"
#include "third_party/blink/renderer/platform/scheduler/base/time_domain.h"
#include "third_party/blink/renderer/platform/scheduler/base/work_queue.h"
#include "third_party/blink/renderer/platform/scheduler/util/tracing_helper.h"
namespace blink {
namespace scheduler {
......@@ -467,7 +467,7 @@ void TaskQueueImpl::WakeUpForDelayedWork(LazyNow* lazy_now) {
void TaskQueueImpl::TraceQueueSize() const {
bool is_tracing;
TRACE_EVENT_CATEGORY_GROUP_ENABLED(
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), &is_tracing);
TRACE_DISABLED_BY_DEFAULT("sequence_manager"), &is_tracing);
if (!is_tracing)
return;
......@@ -477,7 +477,7 @@ void TaskQueueImpl::TraceQueueSize() const {
return;
base::AutoLock lock(immediate_incoming_queue_lock_);
TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), GetName(),
TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("sequence_manager"), GetName(),
immediate_incoming_queue().size() +
main_thread_only().immediate_work_queue->Size() +
main_thread_only().delayed_work_queue->Size() +
......@@ -513,7 +513,10 @@ void TaskQueueImpl::AsValueInto(base::TimeTicks now,
DCHECK(main_thread_only().delayed_work_queue);
DCHECK(main_thread_only().immediate_work_queue);
state->SetString("task_queue_id", PointerToString(this));
state->SetString(
"task_queue_id",
base::StringPrintf("0x%" PRIx64, static_cast<uint64_t>(
reinterpret_cast<uintptr_t>(this))));
state->SetBoolean("enabled", IsQueueEnabled());
state->SetString("time_domain_name",
main_thread_only().time_domain->GetName());
......@@ -539,7 +542,13 @@ void TaskQueueImpl::AsValueInto(base::TimeTicks now,
"delayed_fence_seconds_from_now",
(main_thread_only().delayed_fence.value() - now).InSecondsF());
}
if (AreVerboseSnapshotsEnabled()) {
bool verbose = false;
TRACE_EVENT_CATEGORY_GROUP_ENABLED(
TRACE_DISABLED_BY_DEFAULT("sequence_manager.verbose_snapshots"),
&verbose);
if (verbose) {
state->BeginArray("immediate_incoming_queue");
QueueAsValueInto(immediate_incoming_queue(), now, state);
state->EndArray();
......
......@@ -65,9 +65,16 @@ TaskQueueManagerImpl::TaskQueueManagerImpl(
weak_factory_(this) {
// TODO(altimin): Create a sequence checker here.
DCHECK(controller_->RunsTasksInCurrentSequence());
TRACE_EVENT_WARMUP_CATEGORY("sequence_manager");
TRACE_EVENT_WARMUP_CATEGORY(TRACE_DISABLED_BY_DEFAULT("sequence_manager"));
TRACE_EVENT_WARMUP_CATEGORY(
TRACE_DISABLED_BY_DEFAULT("sequence_manager.debug"));
TRACE_EVENT_WARMUP_CATEGORY(
TRACE_DISABLED_BY_DEFAULT("sequence_manager.verbose_snapshots"));
TRACE_EVENT_OBJECT_CREATED_WITH_ID(
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "TaskQueueManager",
this);
TRACE_DISABLED_BY_DEFAULT("sequence_manager"), "TaskQueueManager", this);
main_thread_only().selector.SetTaskQueueSelectorObserver(this);
RegisterTimeDomain(main_thread_only().real_time_domain.get());
......@@ -78,8 +85,7 @@ TaskQueueManagerImpl::TaskQueueManagerImpl(
TaskQueueManagerImpl::~TaskQueueManagerImpl() {
TRACE_EVENT_OBJECT_DELETED_WITH_ID(
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), "TaskQueueManager",
this);
TRACE_DISABLED_BY_DEFAULT("sequence_manager"), "TaskQueueManager", this);
// TODO(altimin): restore default task runner automatically when
// ThreadController is destroyed.
......@@ -152,9 +158,8 @@ void TaskQueueManagerImpl::SetObserver(Observer* observer) {
void TaskQueueManagerImpl::UnregisterTaskQueueImpl(
std::unique_ptr<internal::TaskQueueImpl> task_queue) {
TRACE_EVENT1("renderer.scheduler",
"TaskQueueManagerImpl::UnregisterTaskQueue", "queue_name",
task_queue->GetName());
TRACE_EVENT1("sequence_manager", "TaskQueueManagerImpl::UnregisterTaskQueue",
"queue_name", task_queue->GetName());
DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
main_thread_only().selector.RemoveQueue(task_queue.get());
......@@ -185,7 +190,7 @@ void TaskQueueManagerImpl::ReloadEmptyWorkQueues(
}
void TaskQueueManagerImpl::WakeUpReadyDelayedQueues(LazyNow* lazy_now) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManagerImpl::WakeUpReadyDelayedQueues");
for (TimeDomain* time_domain : main_thread_only().time_domains) {
......@@ -260,7 +265,7 @@ base::Optional<base::PendingTask> TaskQueueManagerImpl::TakeTask() {
CHECK(Validate());
DCHECK_CALLED_ON_VALID_THREAD(main_thread_checker_);
TRACE_EVENT0("renderer.scheduler", "TaskQueueManagerImpl::TakeTask");
TRACE_EVENT0("sequence_manager", "TaskQueueManagerImpl::TakeTask");
IncomingImmediateWorkMap queues_to_reload;
......@@ -280,9 +285,8 @@ base::Optional<base::PendingTask> TaskQueueManagerImpl::TakeTask() {
bool should_run =
main_thread_only().selector.SelectWorkQueueToService(&work_queue);
TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.debug"),
"TaskQueueManager", this,
AsValueWithSelectorResult(should_run, work_queue));
TRACE_DISABLED_BY_DEFAULT("sequence_manager.debug"), "TaskQueueManager",
this, AsValueWithSelectorResult(should_run, work_queue));
if (!should_run)
return base::nullopt;
......@@ -371,7 +375,7 @@ void TaskQueueManagerImpl::DidQueueTask(
void TaskQueueManagerImpl::NotifyWillProcessTask(ExecutingTask* executing_task,
LazyNow* time_before_task) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManagerImpl::NotifyWillProcessTaskObservers");
if (executing_task->task_queue->GetQuiescenceMonitored())
main_thread_only().task_was_run_on_quiescence_monitored_queue = true;
......@@ -385,14 +389,14 @@ void TaskQueueManagerImpl::NotifyWillProcessTask(ExecutingTask* executing_task,
if (executing_task->task_queue->GetShouldNotifyObservers()) {
{
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.WillProcessTaskObservers");
for (auto& observer : main_thread_only().task_observers)
observer.WillProcessTask(executing_task->pending_task);
}
{
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.QueueNotifyWillProcessTask");
executing_task->task_queue->NotifyWillProcessTask(
executing_task->pending_task);
......@@ -408,14 +412,14 @@ void TaskQueueManagerImpl::NotifyWillProcessTask(ExecutingTask* executing_task,
MonotonicTimeInSeconds(executing_task->task_start_time);
{
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.WillProcessTaskTimeObservers");
for (auto& observer : main_thread_only().task_time_observers)
observer.WillProcessTask(task_start_time_sec);
}
{
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.QueueOnTaskStarted");
executing_task->task_queue->OnTaskStarted(
executing_task->pending_task, executing_task->task_start_time);
......@@ -431,7 +435,7 @@ void TaskQueueManagerImpl::NotifyWillProcessTask(ExecutingTask* executing_task,
void TaskQueueManagerImpl::NotifyDidProcessTask(
const ExecutingTask& executing_task,
LazyNow* time_after_task) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManagerImpl::NotifyDidProcessTaskObservers");
base::ThreadTicks task_end_thread_time;
......@@ -448,28 +452,28 @@ void TaskQueueManagerImpl::NotifyDidProcessTask(
if (task_start_time_sec) {
task_end_time_sec = MonotonicTimeInSeconds(time_after_task->Now());
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.DidProcessTaskTimeObservers");
for (auto& observer : main_thread_only().task_time_observers)
observer.DidProcessTask(task_start_time_sec, task_end_time_sec);
}
{
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.DidProcessTaskObservers");
for (auto& observer : main_thread_only().task_observers)
observer.DidProcessTask(executing_task.pending_task);
}
{
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.QueueNotifyDidProcessTask");
executing_task.task_queue->NotifyDidProcessTask(
executing_task.pending_task);
}
{
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"TaskQueueManager.QueueOnTaskCompleted");
if (task_start_time_sec && task_end_time_sec) {
executing_task.task_queue->OnTaskCompleted(
......
......@@ -71,7 +71,7 @@ void ThreadControllerImpl::ScheduleWork() {
}
any_sequence().immediate_do_work_posted = true;
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"ThreadControllerImpl::ScheduleWork::PostTask");
task_runner_->PostTask(FROM_HERE, immediate_do_work_closure_);
}
......@@ -101,7 +101,7 @@ void ThreadControllerImpl::ScheduleDelayedWork(base::TimeTicks now,
}
base::TimeDelta delay = std::max(base::TimeDelta(), run_time - now);
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"ThreadControllerImpl::ScheduleDelayedWork::PostDelayedTask",
"delay_ms", delay.InMillisecondsF());
......@@ -234,7 +234,7 @@ void ThreadControllerImpl::OnBeginNestedRunLoop() {
any_sequence().nesting_depth++;
if (!any_sequence().immediate_do_work_posted) {
any_sequence().immediate_do_work_posted = true;
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("sequence_manager"),
"ThreadControllerImpl::OnBeginNestedRunLoop::PostTask");
task_runner_->PostTask(FROM_HERE, immediate_do_work_closure_);
}
......
......@@ -17,14 +17,6 @@ const char kTracingCategoryNameInfo[] =
const char kTracingCategoryNameDebug[] =
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.debug");
namespace {
// No trace events should be created with this category.
const char kTracingCategoryNameVerboseSnapshots[] =
TRACE_DISABLED_BY_DEFAULT("renderer.scheduler.enable_verbose_snapshots");
} // namespace
namespace internal {
void ValidateTracingCategory(const char* category) {
......@@ -40,19 +32,11 @@ void ValidateTracingCategory(const char* category) {
} // namespace internal
bool AreVerboseSnapshotsEnabled() {
bool result = false;
TRACE_EVENT_CATEGORY_GROUP_ENABLED(kTracingCategoryNameVerboseSnapshots,
&result);
return result;
}
void WarmupTracingCategories() {
// No need to warm-up toplevel category here.
TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameDefault);
TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameInfo);
TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameDebug);
TRACE_EVENT_WARMUP_CATEGORY(kTracingCategoryNameVerboseSnapshots);
}
std::string PointerToString(const void* pointer) {
......
......@@ -34,8 +34,6 @@ PLATFORM_EXPORT void ValidateTracingCategory(const char* category);
PLATFORM_EXPORT void WarmupTracingCategories();
PLATFORM_EXPORT bool AreVerboseSnapshotsEnabled();
PLATFORM_EXPORT std::string PointerToString(const void* pointer);
PLATFORM_EXPORT double TimeDeltaToMilliseconds(const base::TimeDelta& value);
......
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