code: private void warmup(OpDistributionFactory operations)
      {
          // warmup - do 50k iterations; by default hotspot compiles methods after 10k invocations
          PrintStream warmupOutput = new PrintStream(new OutputStream() { @Override public void write(int b) throws IOException { } } );
          int iterations = 50000 * settings.node.nodes.size();
          int threads = 20;
  
          if (settings.rate.maxThreads > 0)
              threads = Math.min(threads, settings.rate.maxThreads);
          if (settings.rate.threadCount > 0)
              threads = Math.min(threads, settings.rate.threadCount);
  
          for (OpDistributionFactory single : operations.each())
          {
              // we need to warm up all the nodes in the cluster ideally, but we may not be the only stress instance;
              // so warm up all the nodes we're speaking to only.
              output.println(String.format("Warming up %s with %d iterations...", single.desc(), iterations));
              run(single, threads, iterations, 0, null, null, warmupOutput);
          }
      }
docs: type provided separately to support recursive call for mixed command with each command type it is performing