diff --git a/test/cpp/qps/client.h b/test/cpp/qps/client.h
index 7d5f6466f98dba2077d3c87cb89832c8bf5b75d4..50b2bf25147341155f98386f925610c1f1b8e105 100644
--- a/test/cpp/qps/client.h
+++ b/test/cpp/qps/client.h
@@ -324,7 +324,7 @@ class ClientImpl : public Client {
              std::function<std::unique_ptr<StubType>(std::shared_ptr<Channel>)>
                  create_stub)
       : channels_(config.client_channels()), create_stub_(create_stub) {
-    LimitCores(config.core_list().data(), config.core_list_size());
+    cores_ = LimitCores(config.core_list().data(), config.core_list_size());
 
     for (int i = 0; i < config.client_channels(); i++) {
       channels_[i].init(config.server_targets(i % config.server_targets_size()),
@@ -337,6 +337,7 @@ class ClientImpl : public Client {
   virtual ~ClientImpl() {}
 
  protected:
+  int cores_;
   RequestType request_;
 
   class ClientChannelInfo {
diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
index 4229e1956e6947f92e92f774038495ee830ddc5f..f3f8f37051b0778016ac3a4eface434d13f646f0 100644
--- a/test/cpp/qps/client_async.cc
+++ b/test/cpp/qps/client_async.cc
@@ -159,6 +159,7 @@ class AsyncClient : public ClientImpl<StubType, RequestType> {
   using Client::SetupLoadTest;
   using Client::NextIssueTime;
   using Client::closed_loop_;
+  using ClientImpl<StubType, RequestType>::cores_;
   using ClientImpl<StubType, RequestType>::channels_;
   using ClientImpl<StubType, RequestType>::request_;
   AsyncClient(const ClientConfig& config,
@@ -345,11 +346,11 @@ class AsyncClient : public ClientImpl<StubType, RequestType> {
    private:
     bool val_;
   };
-  static int NumThreads(const ClientConfig& config) {
+  int NumThreads(const ClientConfig& config) {
     int num_threads = config.async_client_threads();
     if (num_threads <= 0) {  // Use dynamic sizing
-      num_threads = gpr_cpu_num_cores();
-      gpr_log(GPR_INFO, "Sizing client server to %d threads", num_threads);
+      num_threads = cores_;
+      gpr_log(GPR_INFO, "Sizing async client to %d threads", num_threads);
     }
     return num_threads;
   }