diff --git a/garnet/lib/ui/gfx/engine/default_frame_scheduler.cc b/garnet/lib/ui/gfx/engine/default_frame_scheduler.cc
index 9bed5266ea2515cb29684d8a217a844f33ccb903..b7d25f43805992c6118c7cee62351d9863cbdda7 100644
--- a/garnet/lib/ui/gfx/engine/default_frame_scheduler.cc
+++ b/garnet/lib/ui/gfx/engine/default_frame_scheduler.cc
@@ -26,7 +26,11 @@ DefaultFrameScheduler::DefaultFrameScheduler(const Display* display,
   outstanding_frames_.reserve(kMaxOutstandingFrames);
 
   inspect_frame_number_ =
-      inspect_object_.CreateUIntMetric("frame_number", 0);
+      inspect_object_.CreateUIntMetric("most_recent_frame_number", frame_number_);
+  inspect_last_successful_update_start_time_ = inspect_object_.CreateUIntMetric(
+        "inspect_last_successful_update_start_time_", 0);
+  inspect_last_successful_render_start_time_ = inspect_object_.CreateUIntMetric(
+        "inspect_last_successful_render_start_time_", 0);
 }
 
 DefaultFrameScheduler::~DefaultFrameScheduler() {}
@@ -151,9 +155,14 @@ void DefaultFrameScheduler::MaybeRenderFrame(async_dispatcher_t*,
   FXL_DCHECK(delegate_.session_updater);
 
   // Apply all updates
+  const zx_time_t update_start_time = async_now(dispatcher_);
   bool any_updates_were_applied =
       ApplyScheduledSessionUpdates(presentation_time);
 
+  if (any_updates_were_applied) {
+    inspect_last_successful_update_start_time_.Set(update_start_time);
+  }
+
   if (!any_updates_were_applied && !render_pending_ && !render_continuously_) {
     // If necessary, schedule another frame.
     if (!updatable_sessions_.empty()) {
@@ -189,8 +198,7 @@ void DefaultFrameScheduler::MaybeRenderFrame(async_dispatcher_t*,
 
   auto frame_timings =
       fxl::MakeRefCounted<FrameTimings>(this, frame_number_, presentation_time);
-
-  ++frame_number_;
+  inspect_frame_number_.Set(frame_number_);
 
   // Render the frame.
   currently_rendering_ =
@@ -198,6 +206,8 @@ void DefaultFrameScheduler::MaybeRenderFrame(async_dispatcher_t*,
   if (currently_rendering_) {
     outstanding_frames_.push_back(frame_timings);
     render_pending_ = false;
+
+    inspect_last_successful_render_start_time_.Set(presentation_time);
   } else {
     // TODO(SCN-1344): Handle failed rendering somehow.
     FXL_LOG(WARNING)
@@ -206,6 +216,8 @@ void DefaultFrameScheduler::MaybeRenderFrame(async_dispatcher_t*,
         << "and no callbacks may be invoked.";
   }
 
+  ++frame_number_;
+
   // If necessary, schedule another frame.
   if (!updatable_sessions_.empty()) {
     RequestFrame();
diff --git a/garnet/lib/ui/gfx/engine/default_frame_scheduler.h b/garnet/lib/ui/gfx/engine/default_frame_scheduler.h
index d3ad23251caf2fa9a80a092aad85a3f720282ebf..60a086745d91ba59fa1b6180bb12cd9c4f5af1ab 100644
--- a/garnet/lib/ui/gfx/engine/default_frame_scheduler.h
+++ b/garnet/lib/ui/gfx/engine/default_frame_scheduler.h
@@ -116,6 +116,8 @@ class DefaultFrameScheduler : public FrameScheduler {
 
   inspect::Object inspect_object_;
   inspect::UIntMetric inspect_frame_number_;
+  inspect::UIntMetric inspect_last_successful_update_start_time_;
+  inspect::UIntMetric inspect_last_successful_render_start_time_;
 
   fxl::WeakPtrFactory<DefaultFrameScheduler> weak_factory_;  // must be last
 
diff --git a/garnet/lib/ui/gfx/engine/session.cc b/garnet/lib/ui/gfx/engine/session.cc
index ff2304c86a81f7f52df99bfe8f10fa1e24721c9f..6566b41b182d621922886f7b4d48df6fac8789b6 100644
--- a/garnet/lib/ui/gfx/engine/session.cc
+++ b/garnet/lib/ui/gfx/engine/session.cc
@@ -75,8 +75,11 @@ Session::Session(SessionId id, SessionContext session_context,
 
   inspect_resource_count_ =
       inspect_object_.CreateUIntMetric("resource_count", 0);
-  inspect_last_applied_update_presentation_time_ =
-      inspect_object_.CreateUIntMetric("last_applied_update_presentation_time",
+  inspect_last_applied_target_presentation_time_ =
+      inspect_object_.CreateUIntMetric("last_applied_target_presentation_time",
+                                       0);
+  inspect_last_applied_requested_presentation_time_ =
+      inspect_object_.CreateUIntMetric("last_applied_request_presentation_time",
                                        0);
   inspect_last_requested_presentation_time_ =
       inspect_object_.CreateUIntMetric("last_requested_presentation_time", 0);
@@ -231,8 +234,10 @@ Session::ApplyUpdateResult Session::ApplyScheduledUpdates(
 
     // TODO(SCN-1202): gather statistics about how close the actual
     // presentation_time was to the requested time.
-    inspect_last_applied_update_presentation_time_.Set(
+    inspect_last_applied_requested_presentation_time_.Set(
         last_applied_update_presentation_time_);
+    inspect_last_applied_target_presentation_time_.Set(
+        target_presentation_time);
     inspect_resource_count_.Set(resource_count_);
   }
 
diff --git a/garnet/lib/ui/gfx/engine/session.h b/garnet/lib/ui/gfx/engine/session.h
index 04c24038cca1b8c1bec54998f7b3c7866d01ef04..7146588f524731bfc9c734b612ef93b3ba8203db 100644
--- a/garnet/lib/ui/gfx/engine/session.h
+++ b/garnet/lib/ui/gfx/engine/session.h
@@ -197,7 +197,8 @@ class Session {
 
   inspect::Object inspect_object_;
   inspect::UIntMetric inspect_resource_count_;
-  inspect::UIntMetric inspect_last_applied_update_presentation_time_;
+  inspect::UIntMetric inspect_last_applied_target_presentation_time_;
+  inspect::UIntMetric inspect_last_applied_requested_presentation_time_;
   inspect::UIntMetric inspect_last_requested_presentation_time_;
 
   fxl::WeakPtrFactory<Session> weak_factory_;  // must be last