code: func (d *DockerHelper) DoParallelContainerStartBenchmark(qps float64, testPeriod time.Duration, routineNumber int) []int {
  	wg := &sync.WaitGroup{}
  	wg.Add(routineNumber)
  	ratelimit := ratelimit.NewBucketWithRate(qps, int64(routineNumber))
  	latenciesTable := make([][]int, routineNumber)
  	for i := 0; i < routineNumber; i++ {
  		go func(index int) {
  			startTime := time.Now()
  			latencies := []int{}
  			for {
  				ratelimit.Wait(1)
  				start := time.Now()
  				ids := d.CreateContainers(1)
  				d.StartContainers(ids)
  				latencies = append(latencies, int(time.Since(start).Nanoseconds()))
  				if time.Now().Sub(startTime) >= testPeriod {
  					break
  				}
  			}
  			latenciesTable[index] = latencies
  			wg.Done()
  		}(i)
  	}
  	wg.Wait()
  	allLatencies := []int{}
  	for _, latencies := range latenciesTable {
  		allLatencies = append(allLatencies, latencies...)
  	}
  	return allLatencies
  }
docs: // DoParallelContainerStartBenchmark starts routineNumber of goroutines and let them start containers, returns latencies
  // of all the starting calls in nanoseconds. There is a global rate limit on starting calls per second.