code: func onBenchmark(cf *CLIConf) {
  	tc, err := makeClient(cf, false)
  	if err != nil {
  		utils.FatalError(err)
  	}
  	result, err := tc.Benchmark(cf.Context, client.Benchmark{
  		Command:  cf.RemoteCommand,
  		Threads:  cf.BenchThreads,
  		Duration: cf.BenchDuration,
  		Rate:     cf.BenchRate,
  	})
  	if err != nil {
  		fmt.Fprintln(os.Stderr, utils.UserMessageFromError(err))
  		os.Exit(255)
  	}
  	fmt.Printf("\n")
  	fmt.Printf("* Requests originated: %v\n", result.RequestsOriginated)
  	fmt.Printf("* Requests failed: %v\n", result.RequestsFailed)
  	if result.LastError != nil {
  		fmt.Printf("* Last error: %v\n", result.LastError)
  	}
  	fmt.Printf("\nHistogram\n\n")
  	t := asciitable.MakeTable([]string{"Percentile", "Duration"})
  	for _, quantile := range []float64{25, 50, 75, 90, 95, 99, 100} {
  		t.AddRow([]string{fmt.Sprintf("%v", quantile),
  			fmt.Sprintf("%v ms", result.Histogram.ValueAtQuantile(quantile)),
  		})
  	}
  	io.Copy(os.Stdout, t.AsBuffer())
  	fmt.Printf("\n")
  }
docs: // onBenchmark executes benchmark