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 ) ; } }
type provided separately to support recursive call for mixed command with each command type it is performing