alluxio.RpcUtilsBench Maven / Gradle / Ivy
/*
* The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
* (the "License"). You may not use this work except in compliance with the License, which is
* available at www.apache.org/licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied, as more fully set forth in the License.
*
* See the NOTICE file distributed with this work for information regarding copyright ownership.
*/
package alluxio;
import static alluxio.RpcUtils.callAndReturn;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.results.format.ResultFormatType;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.CommandLineOptionException;
import org.openjdk.jmh.runner.options.CommandLineOptions;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.TimeUnit;
/**
* Benchmarks for {@link alluxio.RpcUtils}.
*/
@Fork(value = 1, jvmArgsPrepend = "-server")
@Warmup(iterations = 2, time = 3, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 6, time = 3, timeUnit = TimeUnit.SECONDS)
@BenchmarkMode(Mode.Throughput)
public class RpcUtilsBench {
private static final Logger LOG = LoggerFactory.getLogger(RpcUtilsBench.class);
private static final String METHOD_NAME = "CheckAccess"; // an arbitrary rpc method name
@Benchmark
public long testCallAndReturn(BenchParams params) throws Exception {
return callAndReturn(LOG,
() -> {
Blackhole.consumeCPU(params.mDelay);
return params.mDelay;
},
METHOD_NAME,
true, // irrelevant as no failure should occur here
"");
}
@Benchmark
public long delayBaseline(BenchParams params) throws Exception {
Blackhole.consumeCPU(params.mDelay);
return params.mDelay;
}
@State(Scope.Benchmark)
public static class BenchParams {
@Param({ "500", "1000", "2000", "4000", "8000", "16000"})
public long mDelay;
}
public static void main(String[] args) throws RunnerException, CommandLineOptionException {
Options argsCli = new CommandLineOptions(args);
Options opts = new OptionsBuilder()
.parent(argsCli)
.include(RpcUtilsBench.class.getName())
.result("results.json")
.resultFormat(ResultFormatType.JSON)
.build();
new Runner(opts).run();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy