diff --git a/libc/bionic/bionic_systrace.cpp b/libc/bionic/bionic_systrace.cpp
index 8e8ff76..5699f6e 100644
--- a/libc/bionic/bionic_systrace.cpp
+++ b/libc/bionic/bionic_systrace.cpp
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-#include <cutils/trace.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -23,55 +22,26 @@
 
 #include "private/bionic_lock.h"
 #include "private/bionic_systrace.h"
+#include "private/CachedProperty.h"
 #include "private/libc_logging.h"
 
-#define _REALLY_INCLUDE_SYS__SYSTEM_PROPERTIES_H_
-#include <sys/_system_properties.h>
+#include <cutils/trace.h> // For ATRACE_TAG_BIONIC.
 
 #define WRITE_OFFSET   32
 
-constexpr char SYSTRACE_PROPERTY_NAME[] = "debug.atrace.tags.enableflags";
-
 static Lock g_lock;
-static const prop_info* g_pinfo;
-static uint32_t g_property_serial = -1;
-static uint32_t g_property_area_serial = -1;
-static uint64_t g_tags;
 static int g_trace_marker_fd = -1;
 
 static bool should_trace() {
-  bool result = false;
-  g_lock.lock();
-  // debug.atrace.tags.enableflags is set to a safe non-tracing value during property
-  // space initialization, so it should only be null in two cases, if there are
-  // insufficient permissions for this process to access the property, in which
-  // case an audit will be logged, and during boot before the property server has
-  // been started, in which case we store the global property_area serial to prevent
-  // the costly find operation until we see a changed property_area.
-  if (g_pinfo == nullptr && g_property_area_serial != __system_property_area_serial()) {
-    g_property_area_serial = __system_property_area_serial();
-    g_pinfo = __system_property_find(SYSTRACE_PROPERTY_NAME);
-  }
+  static CachedProperty g_debug_atrace_tags_enableflags("debug.atrace.tags.enableflags");
+  static uint64_t g_tags;
 
-  if (g_pinfo) {
-    // Find out which tags have been enabled on the command line and set
-    // the value of tags accordingly.  If the value of the property changes,
-    // the serial will also change, so the costly system_property_read function
-    // can be avoided by calling the much cheaper system_property_serial
-    // first.  The values within pinfo may change, but its location is guaranteed
-    // not to move.
-    uint32_t cur_serial = __system_property_serial(g_pinfo);
-    if (cur_serial != g_property_serial) {
-      __system_property_read_callback(g_pinfo,
-              [] (void*, const char*, const char* value, uint32_t serial) {
-                g_property_serial = serial;
-                g_tags = strtoull(value, nullptr, 0);
-              }, nullptr);
-    }
-    result = ((g_tags & ATRACE_TAG_BIONIC) != 0);
+  g_lock.lock();
+  if (g_debug_atrace_tags_enableflags.DidChange()) {
+    g_tags = strtoull(g_debug_atrace_tags_enableflags.Get(), nullptr, 0);
   }
   g_lock.unlock();
-  return result;
+  return ((g_tags & ATRACE_TAG_BIONIC) != 0);
 }
 
 static int get_trace_marker_fd() {
