diff --git a/sweet/benchmarks/etcd/main.go b/sweet/benchmarks/etcd/main.go
index 2625440..a20a0b4 100644
--- a/sweet/benchmarks/etcd/main.go
+++ b/sweet/benchmarks/etcd/main.go
@@ -45,6 +45,7 @@
 	isProfiling  bool
 	short        bool
 	procsPerInst int
+	gomaxprocs   int
 	bench        *benchmark
 }
 
@@ -68,6 +69,7 @@
 	}
 	runtime.GOMAXPROCS(procsPerInst)
 	cliCfg.procsPerInst = procsPerInst
+	cliCfg.gomaxprocs = procs
 }
 
 type etcdInstance struct {
@@ -357,6 +359,7 @@
 		driver.DoCoreDump(true),
 		driver.BenchmarkPID(instances[0].cmd.Process.Pid),
 		driver.DoPerf(true),
+		driver.WithGOMAXPROCS(cfg.gomaxprocs),
 	}
 	return driver.RunBenchmark(cfg.bench.reportName, func(d *driver.B) error {
 		// Set up diagnostics.
diff --git a/sweet/benchmarks/gvisor/http_server.go b/sweet/benchmarks/gvisor/http_server.go
index 1c9b91e..1115237 100644
--- a/sweet/benchmarks/gvisor/http_server.go
+++ b/sweet/benchmarks/gvisor/http_server.go
@@ -159,7 +159,7 @@
 			return fmt.Errorf("server startup timed out")
 		}
 		return nil
-	}, driver.DoTime(true))
+	}, driver.DoTime(true), driver.WithGOMAXPROCS(procs))
 
 	workers := make([]pool.Worker, 0, clients)
 	for i := 0; i < clients; i++ {
@@ -202,5 +202,5 @@
 		d.Ops(len(latencies))
 		d.Report(driver.StatTime, uint64((int(b.duration)*clients)/len(latencies)))
 		return nil
-	}, driver.DoTime(true), driver.DoAvgRSS(srvCmd.RSSFunc()))
+	}, driver.DoTime(true), driver.DoAvgRSS(srvCmd.RSSFunc()), driver.WithGOMAXPROCS(procs))
 }
diff --git a/sweet/benchmarks/internal/driver/driver.go b/sweet/benchmarks/internal/driver/driver.go
index 36d3ed7..9a7d1b4 100644
--- a/sweet/benchmarks/internal/driver/driver.go
+++ b/sweet/benchmarks/internal/driver/driver.go
@@ -12,6 +12,7 @@
 	"os"
 	"os/exec"
 	"path/filepath"
+	"runtime"
 	"runtime/pprof"
 	"runtime/trace"
 	"sort"
@@ -129,6 +130,12 @@
 	}
 }
 
+func WithGOMAXPROCS(procs int) RunOption {
+	return func(b *B) {
+		b.gomaxprocs = procs
+	}
+}
+
 var InProcessMeasurementOptions = []RunOption{
 	DoTime(true),
 	DoPeakRSS(true),
@@ -151,6 +158,7 @@
 	doPeakRSS     bool
 	doPeakVM      bool
 	doCoreDump    bool
+	gomaxprocs    int
 	collectDiag   map[diagnostics.Type]bool
 	rssFunc       func() (uint64, error)
 	statsMu       sync.Mutex
@@ -372,7 +380,11 @@
 	if b.resultsWriter != nil {
 		out = b.resultsWriter
 	}
-	fmt.Fprintf(out, "Benchmark%s %d", b.name, b.ops)
+	suffix := ""
+	if b.gomaxprocs > 1 {
+		suffix = fmt.Sprintf("-%d", b.gomaxprocs)
+	}
+	fmt.Fprintf(out, "Benchmark%s%s %d", b.name, suffix, b.ops)
 	for _, name := range names {
 		value := b.stats[name]
 		if value != 0 {
@@ -442,6 +454,11 @@
 		opt(b)
 	}
 
+	// Make sure gomaxprocs is set.
+	if b.gomaxprocs == 0 {
+		b.gomaxprocs = runtime.GOMAXPROCS(-1)
+	}
+
 	// Start the RSS sampler and start the timer.
 	stop := b.startRSSSampler()
 
diff --git a/sweet/benchmarks/tile38/main.go b/sweet/benchmarks/tile38/main.go
index f65870c..3719d75 100644
--- a/sweet/benchmarks/tile38/main.go
+++ b/sweet/benchmarks/tile38/main.go
@@ -37,6 +37,7 @@
 	dataPath    string
 	tmpDir      string
 	serverProcs int
+	gomaxprocs  int
 	isProfiling bool
 	short       bool
 }
@@ -82,6 +83,7 @@
 	}
 	runtime.GOMAXPROCS(clientProcs)
 	cliCfg.serverProcs = serverProcs
+	cliCfg.gomaxprocs = procs
 }
 
 func doWithinCircle(c redis.Conn, lat, lon float64) error {
@@ -328,6 +330,7 @@
 		driver.DoCoreDump(true),
 		driver.BenchmarkPID(srvCmd.Process.Pid),
 		driver.DoPerf(true),
+		driver.WithGOMAXPROCS(cfg.gomaxprocs),
 	}
 	iters := 40 * 50000
 	if cfg.short {
