driver: report benchmem in benchmark name

The benchmem value is important to understanding the results of the
garbage benchmark, so it's important to include it in the benchmark
report.

Change-Id: I6bf2b0c8450b9c4e34d39a7f12822870f5fad131
Reviewed-on: https://go-review.googlesource.com/33583
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/driver/driver.go b/driver/driver.go
index bfe8d9b..86f6382 100644
--- a/driver/driver.go
+++ b/driver/driver.go
@@ -37,10 +37,11 @@
 	tmpDir    = flag.String("tmpdir", os.TempDir(), "dir for temporary files")
 	genSvg    = flag.Bool("svg", false, "generate svg profiles")
 
-	BenchMem  int
 	BenchTime time.Duration
 	WorkDir   string
 
+	usedBenchMem bool
+
 	// startTrace starts runtime tracing if supported and
 	// requested and returns a function to stop tracing.
 	startTrace = func() func() {
@@ -51,7 +52,6 @@
 func Main(name string, f func() Result) {
 	flag.Parse()
 	// Copy to public variables, so that benchmarks can access the values.
-	BenchMem = *benchMem
 	BenchTime = *benchTime
 	WorkDir = *tmpDir
 
@@ -75,6 +75,11 @@
 	}
 }
 
+func BenchMem() int {
+	usedBenchMem = true
+	return *benchMem
+}
+
 func setupWatchdog() {
 	t := *benchTime
 	// Be somewhat conservative, and build benchmark does not care about benchTime.
@@ -128,6 +133,9 @@
 		fmt.Printf("# %s=%s\n", name, path)
 	}
 
+	if usedBenchMem {
+		name = fmt.Sprintf("%s/benchmem-MB=%d", name, *benchMem)
+	}
 	fmt.Printf("Benchmark%s-%d %8d\t%10d ns/op", name, runtime.GOMAXPROCS(-1), res.N, res.RunTime)
 	var metrics []string
 	for metric := range res.Metrics {
diff --git a/garbage/garbage.go b/garbage/garbage.go
index 8378a55..02332ae 100644
--- a/garbage/garbage.go
+++ b/garbage/garbage.go
@@ -38,8 +38,8 @@
 func benchmark() driver.Result {
 	if parsed == nil {
 		mem := packageMemConsumption()
-		avail := (driver.BenchMem << 20) * 4 / 5 // 4/5 to account for non-heap memory
-		npkg := avail / mem / 2                  // 2 to account for GOGC=100
+		avail := (driver.BenchMem() << 20) * 4 / 5 // 4/5 to account for non-heap memory
+		npkg := avail / mem / 2                    // 2 to account for GOGC=100
 		parsed = make([]ParsedPackage, npkg)
 		for n := 0; n < 2; n++ { // warmup GC
 			for i := range parsed {