diff --git a/test/cpp/qps/json_run_localhost.cc b/test/cpp/qps/json_run_localhost.cc
index b36dbcec2f95a68141bb69b8af210b8ebbbb81f5..106509ab83e9e82fcaaf570064cc68304ff72511 100644
--- a/test/cpp/qps/json_run_localhost.cc
+++ b/test/cpp/qps/json_run_localhost.cc
@@ -50,15 +50,15 @@ std::string as_string(const T& val) {
   return out.str();
 }
 
-static void LogStatus(int status) {
+static void LogStatus(int status, const char* label) {
   if (WIFEXITED(status)) {
-    gpr_log(GPR_INFO, "subprocess exited with status %d",
+    gpr_log(GPR_INFO, "%s: subprocess exited with status %d", label,
             WEXITSTATUS(status));
   } else if (WIFSIGNALED(status)) {
-    gpr_log(GPR_INFO, "subprocess terminated with signal %d",
+    gpr_log(GPR_INFO, "%s: subprocess terminated with signal %d", label,
             WTERMSIG(status));
   } else {
-    gpr_log(GPR_INFO, "unknown subprocess status: %d", status);
+    gpr_log(GPR_INFO, "%s: unknown subprocess status: %d", label, status);
   }
 }
 
@@ -87,21 +87,18 @@ int main(int argc, char** argv) {
   for (int i = 1; i < argc; i++) {
     args.push_back(argv[i]);
   }
-gpr_log(GPR_INFO, "calling Join() on driver");
   int status = SubProcess(args).Join();
   if (status != 0) {
-    LogStatus(status);
-    GPR_ASSERT(status == 0);
+    LogStatus(status, "driver");
   }
 
   for (auto it = jobs.begin(); it != jobs.end(); ++it) {
     (*it)->Interrupt();
   }
   for (auto it = jobs.begin(); it != jobs.end(); ++it) {
-gpr_log(GPR_INFO, "calling Join() on job");
     status = (*it)->Join();
     if (status != 0) {
-      LogStatus(status);
+      LogStatus(status, "worker");
     }
   }
 }