diff --git a/include/perfetto/ftrace_reader/ftrace_controller.h b/include/perfetto/ftrace_reader/ftrace_controller.h
index b8c30e2..e72e0d1 100644
--- a/include/perfetto/ftrace_reader/ftrace_controller.h
+++ b/include/perfetto/ftrace_reader/ftrace_controller.h
@@ -64,16 +64,16 @@
   }
   const std::set<std::string>& atrace_apps() const { return atrace_apps_; }
 
-  uint32_t total_buffer_size_kb() const { return total_buffer_size_kb_; }
+  uint32_t buffer_size_kb() const { return buffer_size_kb_; }
   uint32_t drain_period_ms() const { return drain_period_ms_; }
-  void set_total_buffer_size_kb(uint32_t v) { total_buffer_size_kb_ = v; }
+  void set_buffer_size_kb(uint32_t v) { buffer_size_kb_ = v; }
   void set_drain_period_ms(uint32_t v) { drain_period_ms_ = v; }
 
  private:
   std::set<std::string> ftrace_events_;
   std::set<std::string> atrace_categories_;
   std::set<std::string> atrace_apps_;
-  uint32_t total_buffer_size_kb_ = 0;
+  uint32_t buffer_size_kb_ = 0;
   uint32_t drain_period_ms_ = 0;
 };
 
diff --git a/include/perfetto/tracing/core/data_source_config.h b/include/perfetto/tracing/core/data_source_config.h
index 4da282b..304f107 100644
--- a/include/perfetto/tracing/core/data_source_config.h
+++ b/include/perfetto/tracing/core/data_source_config.h
@@ -87,10 +87,8 @@
       return &atrace_apps_.back();
     }
 
-    uint32_t total_buffer_size_kb() const { return total_buffer_size_kb_; }
-    void set_total_buffer_size_kb(uint32_t value) {
-      total_buffer_size_kb_ = value;
-    }
+    uint32_t buffer_size_kb() const { return buffer_size_kb_; }
+    void set_buffer_size_kb(uint32_t value) { buffer_size_kb_ = value; }
 
     uint32_t drain_period_ms() const { return drain_period_ms_; }
     void set_drain_period_ms(uint32_t value) { drain_period_ms_ = value; }
@@ -99,7 +97,7 @@
     std::vector<std::string> event_names_;
     std::vector<std::string> atrace_categories_;
     std::vector<std::string> atrace_apps_;
-    uint32_t total_buffer_size_kb_ = {};
+    uint32_t buffer_size_kb_ = {};
     uint32_t drain_period_ms_ = {};
 
     // Allows to preserve unknown protobuf fields for compatibility
diff --git a/protos/perfetto/config/data_source_config.proto b/protos/perfetto/config/data_source_config.proto
index 15bada4..8aeaaea 100644
--- a/protos/perfetto/config/data_source_config.proto
+++ b/protos/perfetto/config/data_source_config.proto
@@ -29,7 +29,8 @@
     repeated string event_names = 1;
     repeated string atrace_categories = 2;
     repeated string atrace_apps = 3;
-    optional uint32 total_buffer_size_kb = 10;
+    // *Per-CPU* buffer size.
+    optional uint32 buffer_size_kb = 10;
     optional uint32 drain_period_ms = 11;
   }
 
diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index bcc9ef2..45958bb 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -23,7 +23,8 @@
     repeated string event_names = 1;
     repeated string atrace_categories = 2;
     repeated string atrace_apps = 3;
-    optional uint32 total_buffer_size_kb = 10;
+    // *Per-CPU* buffer size.
+    optional uint32 buffer_size_kb = 10;
     optional uint32 drain_period_ms = 11;
   }
 
diff --git a/src/ftrace_reader/ftrace_controller.cc b/src/ftrace_reader/ftrace_controller.cc
index 919254d..c324115 100644
--- a/src/ftrace_reader/ftrace_controller.cc
+++ b/src/ftrace_reader/ftrace_controller.cc
@@ -71,17 +71,15 @@
 
 // Post-conditions:
 // 1. result >= 1 (should have at least one page per CPU)
-// 2. result * num_cpus * 4 < kMaxTotalBufferSizeKb
+// 2. result * 4 < kMaxTotalBufferSizeKb
 // 3. If input is 0 output is a good default number.
-size_t ComputeCpuBufferSizeInPages(uint32_t requested_buffer_size_kb,
-                                   size_t cpu_count) {
+size_t ComputeCpuBufferSizeInPages(uint32_t requested_buffer_size_kb) {
   if (requested_buffer_size_kb == 0)
     requested_buffer_size_kb = kDefaultTotalBufferSizeKb;
   if (requested_buffer_size_kb > kMaxTotalBufferSizeKb)
     requested_buffer_size_kb = kDefaultTotalBufferSizeKb;
 
-  size_t pages =
-      (requested_buffer_size_kb / cpu_count) / (base::kPageSize / 1024);
+  size_t pages = requested_buffer_size_kb / (base::kPageSize / 1024);
   if (pages == 0)
     return 1;
 
@@ -205,13 +203,12 @@
 }
 
 uint32_t FtraceController::GetCpuBufferSizeInPages() {
-  uint32_t max_total_buffer_size_kb = 0;
+  uint32_t max_buffer_size_kb = 0;
   for (const FtraceSink* sink : sinks_) {
-    if (sink->config().total_buffer_size_kb() > max_total_buffer_size_kb)
-      max_total_buffer_size_kb = sink->config().total_buffer_size_kb();
+    if (sink->config().buffer_size_kb() > max_buffer_size_kb)
+      max_buffer_size_kb = sink->config().buffer_size_kb();
   }
-  return ComputeCpuBufferSizeInPages(max_total_buffer_size_kb,
-                                     ftrace_procfs_->NumberOfCpus());
+  return ComputeCpuBufferSizeInPages(max_buffer_size_kb);
 }
 
 void FtraceController::ClearTrace() {
diff --git a/src/ftrace_reader/ftrace_controller_unittest.cc b/src/ftrace_reader/ftrace_controller_unittest.cc
index 22717b0..7f9d6b5 100644
--- a/src/ftrace_reader/ftrace_controller_unittest.cc
+++ b/src/ftrace_reader/ftrace_controller_unittest.cc
@@ -320,7 +320,7 @@
     EXPECT_CALL(*raw_ftrace_procfs,
                 WriteToFile("/root/buffer_size_kb", "8192"));
     FtraceConfig config({"foo"});
-    config.set_total_buffer_size_kb(10 * 1024 * 1024);
+    config.set_buffer_size_kb(10 * 1024 * 1024);
     auto sink = controller.CreateSink(config, &delegate);
   }
 
@@ -328,24 +328,24 @@
     // Your size ends up with less than 1 page per cpu -> 1 page.
     EXPECT_CALL(*raw_ftrace_procfs, WriteToFile("/root/buffer_size_kb", "4"));
     FtraceConfig config({"foo"});
-    config.set_total_buffer_size_kb(1);
+    config.set_buffer_size_kb(1);
     auto sink = controller.CreateSink(config, &delegate);
   }
 
   {
-    // You picked a good size -> your size / # CPUs rounded to nearest page.
+    // You picked a good size -> your size rounded to nearest page.
     EXPECT_CALL(*raw_ftrace_procfs, WriteToFile("/root/buffer_size_kb", "40"));
     FtraceConfig config({"foo"});
-    config.set_total_buffer_size_kb(42);
+    config.set_buffer_size_kb(42);
     auto sink = controller.CreateSink(config, &delegate);
   }
 
   {
-    // You picked a good size -> your size / # CPUs rounded to nearest page.
-    EXPECT_CALL(*raw_ftrace_procfs, WriteToFile("/root/buffer_size_kb", "20"));
+    // You picked a good size -> your size rounded to nearest page.
+    EXPECT_CALL(*raw_ftrace_procfs, WriteToFile("/root/buffer_size_kb", "40"));
     FtraceConfig config({"foo"});
     ON_CALL(*raw_ftrace_procfs, NumberOfCpus()).WillByDefault(Return(2));
-    config.set_total_buffer_size_kb(42);
+    config.set_buffer_size_kb(42);
     auto sink = controller.CreateSink(config, &delegate);
   }
 }
diff --git a/src/ftrace_reader/ftrace_procfs.cc b/src/ftrace_reader/ftrace_procfs.cc
index 356a589..db5975a 100644
--- a/src/ftrace_reader/ftrace_procfs.cc
+++ b/src/ftrace_reader/ftrace_procfs.cc
@@ -30,9 +30,6 @@
 namespace perfetto {
 namespace {
 
-// TODO(b/72148971): Unify with other constants.
-static constexpr size_t kPageSize = 4096;
-
 // Reading /trace produces human readable trace output.
 // Writing to this file clears all trace buffers for all CPUS.
 
@@ -127,12 +124,12 @@
 }
 
 bool FtraceProcfs::SetCpuBufferSizeInPages(size_t pages) {
-  if (pages * kPageSize > 1 * 1024 * 1024 * 1024) {
+  if (pages * base::kPageSize > 1 * 1024 * 1024 * 1024) {
     PERFETTO_ELOG("Tried to set the per CPU buffer size to more than 1gb.");
     return false;
   }
   std::string path = root_ + "buffer_size_kb";
-  return WriteNumberToFile(path, pages * (kPageSize / 1024ul));
+  return WriteNumberToFile(path, pages * (base::kPageSize / 1024ul));
 }
 
 bool FtraceProcfs::EnableTracing() {
diff --git a/src/traced/probes/ftrace_producer.cc b/src/traced/probes/ftrace_producer.cc
index 1462a50..9467c92 100644
--- a/src/traced/probes/ftrace_producer.cc
+++ b/src/traced/probes/ftrace_producer.cc
@@ -115,7 +115,7 @@
     }
   }
 
-  config.set_total_buffer_size_kb(proto_config.total_buffer_size_kb());
+  config.set_buffer_size_kb(proto_config.buffer_size_kb());
   config.set_drain_period_ms(proto_config.drain_period_ms());
 
   // TODO(hjd): Static cast is bad, target_buffer() should return a BufferID.
diff --git a/src/tracing/core/data_source_config.cc b/src/tracing/core/data_source_config.cc
index 43ad4c7..a95d60e 100644
--- a/src/tracing/core/data_source_config.cc
+++ b/src/tracing/core/data_source_config.cc
@@ -109,11 +109,10 @@
         static_cast<decltype(atrace_apps_)::value_type>(field);
   }
 
-  static_assert(
-      sizeof(total_buffer_size_kb_) == sizeof(proto.total_buffer_size_kb()),
-      "size mismatch");
-  total_buffer_size_kb_ = static_cast<decltype(total_buffer_size_kb_)>(
-      proto.total_buffer_size_kb());
+  static_assert(sizeof(buffer_size_kb_) == sizeof(proto.buffer_size_kb()),
+                "size mismatch");
+  buffer_size_kb_ =
+      static_cast<decltype(buffer_size_kb_)>(proto.buffer_size_kb());
 
   static_assert(sizeof(drain_period_ms_) == sizeof(proto.drain_period_ms()),
                 "size mismatch");
@@ -145,12 +144,10 @@
     *entry = static_cast<decltype(proto->atrace_apps(0))>(it);
   }
 
-  static_assert(
-      sizeof(total_buffer_size_kb_) == sizeof(proto->total_buffer_size_kb()),
-      "size mismatch");
-  proto->set_total_buffer_size_kb(
-      static_cast<decltype(proto->total_buffer_size_kb())>(
-          total_buffer_size_kb_));
+  static_assert(sizeof(buffer_size_kb_) == sizeof(proto->buffer_size_kb()),
+                "size mismatch");
+  proto->set_buffer_size_kb(
+      static_cast<decltype(proto->buffer_size_kb())>(buffer_size_kb_));
 
   static_assert(sizeof(drain_period_ms_) == sizeof(proto->drain_period_ms()),
                 "size mismatch");
diff --git a/test/configs/atrace.cfg b/test/configs/atrace.cfg
index 3907ba4..7b6dd8a 100644
--- a/test/configs/atrace.cfg
+++ b/test/configs/atrace.cfg
@@ -11,7 +11,7 @@
     target_buffer: 0
     ftrace_config {
       event_names: "sched_switch"
-      total_buffer_size_kb: 1344 # 4 (page size) * 8 (# cpus) * 42
+      buffer_size_kb: 168  # 4 (page size) * 42
       drain_period_ms: 42
     }
   }
diff --git a/test/configs/ftrace.cfg b/test/configs/ftrace.cfg
index 352671e..df3082e 100644
--- a/test/configs/ftrace.cfg
+++ b/test/configs/ftrace.cfg
@@ -9,7 +9,7 @@
     name: "com.google.perfetto.ftrace"
     target_buffer: 0
     ftrace_config {
-      total_buffer_size_kb: 1344 # 4 (page size) * 8 (# cpus) * 10
+      buffer_size_kb: 40 # 4 (page size) * 10
       drain_period_ms: 200
       event_names: "cpufreq_interactive_setspeed"
       event_names: "cpufreq_interactive_target"
