Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
package co.elastic.apm.agent.benchmark;

import co.elastic.apm.agent.bci.ElasticApmAgent;
import co.elastic.apm.agent.configuration.CoreConfiguration;
import co.elastic.apm.agent.configuration.CoreConfigurationImpl;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.ElasticApmTracerBuilder;
import io.undertow.Undertow;
Expand Down Expand Up @@ -79,8 +79,8 @@ public void setUp(Blackhole blackhole) throws IOException {
tracer = new ElasticApmTracerBuilder()
.configurationRegistry(ConfigurationRegistry.builder()
.addConfigSource(new SimpleSource()
.add(CoreConfiguration.SERVICE_NAME, "benchmark")
.add(CoreConfiguration.INSTRUMENT, Boolean.toString(apmEnabled))
.add(CoreConfigurationImpl.SERVICE_NAME, "benchmark")
.add(CoreConfigurationImpl.INSTRUMENT, Boolean.toString(apmEnabled))
.add("active", Boolean.toString(apmEnabled))
.add("api_request_size", "10mb")
.add("capture_headers", "false")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.benchmark;

import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.impl.transaction.TransactionImpl;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.runner.RunnerException;

Expand All @@ -34,7 +34,7 @@ public LettuceActiveBenchmark() {

@Benchmark
public String benchmarkLettuce() {
Transaction transaction = tracer.startRootTransaction(null).withName("transaction").activate();
TransactionImpl transaction = tracer.startRootTransaction(null).withName("transaction").activate();
try {
return sync.get("foo");
} finally {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.benchmark;

import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.impl.transaction.TransactionImpl;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Threads;
import org.openjdk.jmh.runner.RunnerException;
Expand All @@ -36,7 +36,7 @@ public LettuceNotActiveBenchmark() {
@Threads(4)
@Benchmark
public String benchmarkLettuce() {
Transaction transaction = tracer.startRootTransaction(null).withName("transaction").activate();
TransactionImpl transaction = tracer.startRootTransaction(null).withName("transaction").activate();
try {
return sync.get("foo");
} finally {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@

import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.ElasticApmTracerBuilder;
import co.elastic.apm.agent.impl.error.ErrorCapture;
import co.elastic.apm.agent.impl.transaction.Span;
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.report.ReporterConfiguration;
import co.elastic.apm.agent.impl.error.ErrorCaptureImpl;
import co.elastic.apm.agent.impl.transaction.SpanImpl;
import co.elastic.apm.agent.impl.transaction.TransactionImpl;
import co.elastic.apm.agent.report.ReporterConfigurationImpl;
import co.elastic.apm.agent.util.MathUtils;
import org.ehcache.sizeof.SizeOf;

Expand All @@ -32,15 +32,15 @@ public class SizeOfSpan {
public static void main(String[] args) {
final SizeOf sizeOf = SizeOf.newInstance();
ElasticApmTracer tracer = new ElasticApmTracerBuilder().buildAndStart();
final long sizeOfSpan = sizeOf.deepSizeOf(new Span(tracer));
final long sizeOfTransaction = sizeOf.deepSizeOf(new Transaction(tracer));
final long sizeOfError = sizeOf.deepSizeOf(new ErrorCapture(tracer));
final long sizeOfSpan = sizeOf.deepSizeOf(new SpanImpl(tracer));
final long sizeOfTransaction = sizeOf.deepSizeOf(new TransactionImpl(tracer));
final long sizeOfError = sizeOf.deepSizeOf(new ErrorCaptureImpl(tracer));

System.out.println("sizeof span: " + sizeOfSpan);
System.out.println("sizeof transaction: " + sizeOfTransaction);
System.out.println("sizeof error: " + sizeOfError);

final int queueSize = MathUtils.getNextPowerOf2(new ReporterConfiguration().getMaxQueueSize());
final int queueSize = MathUtils.getNextPowerOf2(new ReporterConfigurationImpl().getMaxQueueSize());
final long sizeOfObjectPools = queueSize * 2 * sizeOfSpan +
queueSize * 2 * sizeOfTransaction +
queueSize * sizeOfError;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import co.elastic.apm.agent.benchmark.AbstractBenchmark;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.ElasticApmTracerBuilder;
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.objectpool.ObjectPool;
import co.elastic.apm.agent.impl.transaction.TransactionImpl;
import co.elastic.apm.agent.objectpool.ObservableObjectPool;
import co.elastic.apm.agent.objectpool.impl.QueueBasedObjectPool;
import co.elastic.apm.agent.objectpool.impl.ThreadLocalObjectPool;
import org.agrona.concurrent.ManyToManyConcurrentArrayQueue;
Expand All @@ -45,11 +45,11 @@
public class ObjectPoolBenchmark extends AbstractBenchmark {

private ElasticApmTracer tracer;
private ObjectPool<Transaction> blockingQueueObjectPool;
private ObjectPool<Transaction> agronaQueueObjectPool;
private ObjectPool<Transaction> threadLocalObjectPool;
private ObjectPool<Transaction> jctoolsQueueObjectPool;
private ObjectPool<Transaction> jctoolsAtomicQueueObjectPool;
private ObservableObjectPool<TransactionImpl> blockingQueueObjectPool;
private ObservableObjectPool<TransactionImpl> agronaQueueObjectPool;
private ObservableObjectPool<TransactionImpl> threadLocalObjectPool;
private ObservableObjectPool<TransactionImpl> jctoolsQueueObjectPool;
private ObservableObjectPool<TransactionImpl> jctoolsAtomicQueueObjectPool;

public static void main(String[] args) throws RunnerException {
run(ObjectPoolBenchmark.class);
Expand All @@ -58,11 +58,11 @@ public static void main(String[] args) throws RunnerException {
@Setup
public void setUp() {
tracer = new ElasticApmTracerBuilder().buildAndStart();
blockingQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new ArrayBlockingQueue<>(256), true, () -> new Transaction(tracer));
jctoolsQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new MpmcArrayQueue<>(256), true, () -> new Transaction(tracer));
jctoolsAtomicQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new MpmcAtomicArrayQueue<>(256), true, () -> new Transaction(tracer));
agronaQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new ManyToManyConcurrentArrayQueue<>(256), true, () -> new Transaction(tracer));
threadLocalObjectPool = new ThreadLocalObjectPool<>(64, true, () -> new Transaction(tracer));
blockingQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new ArrayBlockingQueue<>(256), true, () -> new TransactionImpl(tracer));
jctoolsQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new MpmcArrayQueue<>(256), true, () -> new TransactionImpl(tracer));
jctoolsAtomicQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new MpmcAtomicArrayQueue<>(256), true, () -> new TransactionImpl(tracer));
agronaQueueObjectPool = QueueBasedObjectPool.ofRecyclable(new ManyToManyConcurrentArrayQueue<>(256), true, () -> new TransactionImpl(tracer));
threadLocalObjectPool = new ThreadLocalObjectPool<>(64, true, () -> new TransactionImpl(tracer));
}

@TearDown
Expand All @@ -72,46 +72,46 @@ public void tearDown() {

// @Benchmark
@Threads(8)
public Transaction testNewOperator() {
return new Transaction(tracer);
public TransactionImpl testNewOperator() {
return new TransactionImpl(tracer);
}

@Benchmark
@Threads(8)
public Transaction testJctoolsAtomicQueueObjectPool() {
Transaction transaction = jctoolsAtomicQueueObjectPool.createInstance();
public TransactionImpl testJctoolsAtomicQueueObjectPool() {
TransactionImpl transaction = jctoolsAtomicQueueObjectPool.createInstance();
jctoolsAtomicQueueObjectPool.recycle(transaction);
return transaction;
}

// @Benchmark
@Threads(8)
public Transaction testArgonaQueueObjectPool() {
Transaction transaction = agronaQueueObjectPool.createInstance();
public TransactionImpl testArgonaQueueObjectPool() {
TransactionImpl transaction = agronaQueueObjectPool.createInstance();
agronaQueueObjectPool.recycle(transaction);
return transaction;
}

@Benchmark
@Threads(8)
public Transaction testJctoolsQueueObjectPool() {
Transaction transaction = jctoolsQueueObjectPool.createInstance();
public TransactionImpl testJctoolsQueueObjectPool() {
TransactionImpl transaction = jctoolsQueueObjectPool.createInstance();
jctoolsQueueObjectPool.recycle(transaction);
return transaction;
}

//@Benchmark
@Threads(8)
public Transaction testBlockingQueueObjectPool() {
Transaction transaction = blockingQueueObjectPool.createInstance();
public TransactionImpl testBlockingQueueObjectPool() {
TransactionImpl transaction = blockingQueueObjectPool.createInstance();
blockingQueueObjectPool.recycle(transaction);
return transaction;
}

// @Benchmark
@Threads(8)
public Transaction testThreadLocalObjectPool() {
Transaction transaction = threadLocalObjectPool.createInstance();
public TransactionImpl testThreadLocalObjectPool() {
TransactionImpl transaction = threadLocalObjectPool.createInstance();
threadLocalObjectPool.recycle(transaction);
return transaction;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.impl.Tracer;
import org.stagemonitor.configuration.ConfigurationOptionProvider;
import org.stagemonitor.configuration.ConfigurationRegistry;

Expand All @@ -39,7 +38,7 @@ public class ConfigurationExporter {
public static void main(String[] args) throws Exception {
ElasticApmTracer tracer = mock(ElasticApmTracer.class);
doReturn(tracer).when(tracer).require(ElasticApmTracer.class);
doReturn(Tracer.TracerState.UNINITIALIZED).when(tracer).getState();
doReturn(ElasticApmTracer.TracerState.UNINITIALIZED).when(tracer).getState();
GlobalTracer.init(tracer);
try {
ConfigurationRegistry configurationRegistry = ConfigurationRegistry.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import co.elastic.apm.agent.MockTracer;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.impl.Tracer;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.util.DependencyInjectingServiceLoader;
import freemarker.template.Configuration;
Expand Down Expand Up @@ -89,7 +88,7 @@ void setUp() {
renderedDocumentationPath = Paths.get("../../docs/configuration.asciidoc");
ElasticApmTracer tracer = mock(ElasticApmTracer.class);
doReturn(tracer).when(tracer).require(ElasticApmTracer.class);
doReturn(Tracer.TracerState.UNINITIALIZED).when(tracer).getState();
doReturn(ElasticApmTracer.TracerState.UNINITIALIZED).when(tracer).getState();
GlobalTracer.init(tracer);
configurationRegistry = ConfigurationRegistry.builder()
.optionProviders(ServiceLoader.load(ConfigurationOptionProvider.class))
Expand Down
2 changes: 1 addition & 1 deletion apm-agent-core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ It's based on a Disruptor/ring buffer and receives finished transactions potenti
The ring buffer decouples the transaction-producing threads from the co.elastic.apm.agent.report.ReportingEventHandler,
which is single-threaded and sends the transactions to the APM server via HTTP.

The class co.elastic.apm.agent.report.ReporterConfiguration contains all relevant configuration options for the reporter.
The class co.elastic.apm.agent.report.ReporterConfigurationImpl contains all relevant configuration options for the reporter.

## Lifecycle

Expand Down
Loading