diff --git a/src/core/profiling/basic_timers.c b/src/core/profiling/basic_timers.c
index 866833f22576d01bf130c961bad65a71ff4c6ab9..124a8d6621af87dd46e1d12b30328d55c14d29c6 100644
--- a/src/core/profiling/basic_timers.c
+++ b/src/core/profiling/basic_timers.c
@@ -45,7 +45,12 @@
 #include <grpc/support/thd.h>
 #include <stdio.h>
 
-typedef enum { BEGIN = '{', END = '}', MARK = '.' } marker_type;
+typedef enum {
+  BEGIN = '{',
+  END = '}',
+  MARK = '.',
+  IMPORTANT = '!'
+} marker_type;
 
 typedef struct grpc_timer_entry {
   grpc_precise_clock tm;
@@ -101,6 +106,13 @@ void grpc_timer_add_mark(int tag, void* id, const char* file, int line) {
   }
 }
 
+void grpc_timer_add_important_mark(int tag, void* id, const char* file,
+                                   int line) {
+  if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
+    grpc_timers_log_add(tag, IMPORTANT, id, file, line);
+  }
+}
+
 void grpc_timer_begin(int tag, void* id, const char* file, int line) {
   if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {
     grpc_timers_log_add(tag, BEGIN, id, file, line);
diff --git a/src/core/profiling/stap_probes.d b/src/core/profiling/stap_probes.d
index 374eeedd6c06abea95d5e9e29287c1d56592723b..153de91752ad5205d6a3a14bb1a9bc0163d62684 100644
--- a/src/core/profiling/stap_probes.d
+++ b/src/core/profiling/stap_probes.d
@@ -1,5 +1,6 @@
 provider _stap {
 	probe add_mark(int tag);
+	probe add_important_mark(int tag);
 	probe timing_ns_begin(int tag);
 	probe timing_ns_end(int tag);
 };
diff --git a/src/core/profiling/stap_timers.c b/src/core/profiling/stap_timers.c
index 6e3a965dae909c62db5b44abcb7975d24e2aca58..064c86e794e1e203c26032d247a5ac28fe4f00e9 100644
--- a/src/core/profiling/stap_timers.c
+++ b/src/core/profiling/stap_timers.c
@@ -46,6 +46,11 @@ void grpc_timer_add_mark(int tag, void* id, const char* file, int line) {
   _STAP_ADD_MARK(tag);
 }
 
+void grpc_timer_add_important_mark(int tag, void* id, const char* file,
+                                   int line) {
+  _STAP_ADD_IMPORTANT_MARK(tag);
+}
+
 void grpc_timer_begin(int tag, void* id, const char* file, int line) {
   _STAP_TIMING_NS_BEGIN(tag);
 }
diff --git a/src/core/profiling/timers.h b/src/core/profiling/timers.h
index 0b0f7152e79c73c4b18f96df8c4ff77c612fdbf0..4fb465c23718495f8fe2ba2f611787124c9e4da0 100644
--- a/src/core/profiling/timers.h
+++ b/src/core/profiling/timers.h
@@ -42,6 +42,8 @@ void grpc_timers_global_init(void);
 void grpc_timers_global_destroy(void);
 
 void grpc_timer_add_mark(int tag, void *id, const char *file, int line);
+void grpc_timer_add_important_mark(int tag, void *id, const char *file,
+                                   int line);
 void grpc_timer_begin(int tag, void *id, const char *file, int line);
 void grpc_timer_end(int tag, void *id, const char *file, int line);
 
@@ -82,6 +84,10 @@ enum grpc_profiling_tags {
   do {                           \
   } while (0)
 
+#define GRPC_TIMER_IMPORTANT_MARK(tag, id) \
+  do {                           \
+  } while (0)
+
 #define GRPC_TIMER_BEGIN(tag, id) \
   do {                            \
   } while (0)
@@ -102,6 +108,12 @@ enum grpc_profiling_tags {
     grpc_timer_add_mark(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \
   }
 
+#define GRPC_TIMER_IMPORTANT_MARK(tag, id)                                   \
+  if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {                                    \
+    grpc_timer_add_important_mark(tag, ((void *)(gpr_intptr)(id)), __FILE__, \
+                                  __LINE__);                                 \
+  }
+
 #define GRPC_TIMER_BEGIN(tag, id)                                          \
   if (tag < GRPC_PTAG_IGNORE_THRESHOLD) {                                  \
     grpc_timer_begin(tag, ((void *)(gpr_intptr)(id)), __FILE__, __LINE__); \