From d3196d54316d8bd790c7eeac64bfccd8832462f3 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Thu, 13 Mar 2025 00:28:28 -0700 Subject: [PATCH 01/10] Introduce Netty benchmark suite. JAVA-5813 --- .evergreen/.evg.yml | 19 ++++ .evergreen/run-perf-tests.sh | 8 +- driver-benchmarks/build.gradle | 8 ++ .../AbstractBsonDocumentBenchmark.java | 10 +- .../benchmarks/AbstractFindBenchmark.java | 13 +-- .../benchmarks/AbstractGridFSBenchmark.java | 7 +- .../benchmarks/AbstractInsertBenchmark.java | 14 ++- .../benchmarks/AbstractMongoBenchmark.java | 18 +++- .../benchmark/benchmarks/BenchmarkSuite.java | 18 ++-- .../benchmarks/FindManyBenchmark.java | 12 ++- .../benchmarks/FindOneBenchmark.java | 11 ++- .../benchmarks/GridFSDownloadBenchmark.java | 12 ++- .../GridFSMultiFileDownloadBenchmark.java | 13 ++- .../GridFSMultiFileUploadBenchmark.java | 13 ++- .../benchmarks/GridFSUploadBenchmark.java | 9 +- .../benchmarks/InsertManyBenchmark.java | 8 +- .../benchmarks/InsertOneBenchmark.java | 11 ++- .../benchmarks/MultiFileExportBenchmark.java | 13 ++- .../benchmarks/MultiFileImportBenchmark.java | 18 ++-- .../benchmarks/RunCommandBenchmark.java | 16 +++- .../netty/BenchmarkNettyProviderSuite.java | 93 +++++++++++++++++++ .../benchmark/framework/Benchmark.java | 16 +++- .../benchmark/framework/BenchmarkResult.java | 11 ++- .../benchmark/framework/BenchmarkRunner.java | 2 +- .../EvergreenBenchmarkResultWriter.java | 8 +- 25 files changed, 311 insertions(+), 70 deletions(-) create mode 100644 driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index 66b809e38a0..4dfca6595fb 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -780,8 +780,12 @@ functions: type: test params: working_dir: "src" + env: + PROVIDER: ${PROVIDER} script: | ${PREPARE_SHELL} + echo "Running performance tests provider ${PROVIDER}" + PROVIDER=${PROVIDER} PROJECT_DIRECTORY=${PROJECT_DIRECTORY} .evergreen/run-perf-tests.sh "send dashboard data": @@ -1559,6 +1563,20 @@ tasks: - func: "run perf tests" - func: "send dashboard data" + - name: "netty-perf" + tags: [ "perf" ] + commands: + - func: "bootstrap mongo-orchestration" + vars: + VERSION: "v6.0-perf" + TOPOLOGY: "server" + SSL: "nossl" + AUTH: "noauth" + - func: "run perf tests" + vars: + PROVIDER: "Netty" + - func: "send dashboard data" + - name: "aws-lambda-deployed-task" commands: - command: ec2.assume_role @@ -2311,6 +2329,7 @@ buildvariants: run_on: rhel90-dbx-perf-large tasks: - name: "perf" + - name: "netty-perf" - name: plain-auth-test display_name: "PLAIN (LDAP) Auth test" diff --git a/.evergreen/run-perf-tests.sh b/.evergreen/run-perf-tests.sh index d251c194860..76627a967cf 100755 --- a/.evergreen/run-perf-tests.sh +++ b/.evergreen/run-perf-tests.sh @@ -17,8 +17,14 @@ RELATIVE_DIR_PATH="$(dirname "${BASH_SOURCE:-$0}")" export TEST_PATH="${PROJECT_DIRECTORY}/driver-performance-test-data/" export OUTPUT_FILE="${PROJECT_DIRECTORY}/results.json" +if [ "${PROVIDER}" = "Netty" ]; then + TASK="driver-benchmarks:runNetty" +else + TASK="driver-benchmarks:run" +fi + start_time=$(date +%s) -./gradlew -Dorg.mongodb.benchmarks.data=${TEST_PATH} -Dorg.mongodb.benchmarks.output=${OUTPUT_FILE} driver-benchmarks:run +./gradlew -Dorg.mongodb.benchmarks.data=${TEST_PATH} -Dorg.mongodb.benchmarks.output=${OUTPUT_FILE} ${TASK} end_time=$(date +%s) elapsed_secs=$((end_time-start_time)) diff --git a/driver-benchmarks/build.gradle b/driver-benchmarks/build.gradle index 84e32c42e52..74a2c56119a 100644 --- a/driver-benchmarks/build.gradle +++ b/driver-benchmarks/build.gradle @@ -45,6 +45,14 @@ tasks.register("jmh", JavaExec) { classpath = sourceSets.main.runtimeClasspath } +tasks.register("runNetty", JavaExec) { + group = 'application' + description = 'Run the Netty main class.' + mainClass = 'com.mongodb.benchmark.benchmarks.netty.BenchmarkNettyProviderSuite' + classpath = sourceSets.main.runtimeClasspath + jvmArgs applicationDefaultJvmArgs +} + javadoc { enabled = false } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java index dfb7c135dac..64a5e72ea34 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java @@ -29,13 +29,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.Collections; public abstract class AbstractBsonDocumentBenchmark extends Benchmark { protected final PowerOfTwoBufferPool bufferPool = PowerOfTwoBufferPool.DEFAULT; protected final Codec codec; - - private final String name; private final String resourcePath; protected T document; @@ -43,7 +42,7 @@ public abstract class AbstractBsonDocumentBenchmark extends Benchmark { private int fileLength; public AbstractBsonDocumentBenchmark(final String name, final String resourcePath, final Codec codec) { - this.name = name; + super(Collections.emptyList(), name); this.resourcePath = resourcePath; this.codec = codec; } @@ -58,11 +57,6 @@ public void setUp() throws IOException { documentBytes = getDocumentAsBuffer(document); } - @Override - public String getName() { - return name; - } - @Override public int getBytesPerRun() { return fileLength * NUM_INTERNAL_ITERATIONS; diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java index 82e1025558d..5b73a2682b5 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java @@ -32,23 +32,20 @@ public abstract class AbstractFindBenchmark extends AbstractMongoBenchmark { protected MongoCollection collection; - private final String name; private final String resourcePath; private final Class clazz; private int fileLength; - public AbstractFindBenchmark(final String name, final String resourcePath, final Class clazz) { - this.name = name; + public AbstractFindBenchmark(final List tags, + final String name, + final String resourcePath, + final Class clazz) { + super(tags, name); this.resourcePath = resourcePath; this.clazz = clazz; } - @Override - public String getName() { - return name; - } - public void setUp() throws Exception { super.setUp(); collection = client.getDatabase(DATABASE_NAME).getCollection(COLLECTION_NAME, clazz); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java index 28db0c7b9c1..021555486cf 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java @@ -21,13 +21,18 @@ import com.mongodb.client.gridfs.GridFSBucket; import com.mongodb.client.gridfs.GridFSBuckets; +import java.util.List; + public abstract class AbstractGridFSBenchmark extends AbstractMongoBenchmark { private final String resourcePath; protected MongoDatabase database; protected GridFSBucket bucket; protected byte[] fileBytes; - public AbstractGridFSBenchmark(final String resourcePath) { + public AbstractGridFSBenchmark(final List tags, + final String name, + final String resourcePath) { + super(tags, name); this.resourcePath = resourcePath; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java index 561d5c502b5..8e071324d32 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java @@ -24,20 +24,23 @@ import org.bson.json.JsonReader; import java.nio.charset.StandardCharsets; +import java.util.List; public abstract class AbstractInsertBenchmark extends AbstractMongoBenchmark { protected MongoCollection collection; - private final String name; private final String resourcePath; private final Class clazz; private byte[] bytes; protected int fileLength; protected T document; - protected AbstractInsertBenchmark(final String name, final String resourcePath, final Class clazz) { - this.name = name; + protected AbstractInsertBenchmark(final List tags, + final String name, + final String resourcePath, + final Class clazz) { + super(tags, name); this.resourcePath = resourcePath; this.clazz = clazz; } @@ -65,11 +68,6 @@ public void before() throws Exception { collection.drop(); } - @Override - public String getName() { - return name; - } - protected T createDocument() { Codec codec = collection.getCodecRegistry().get(clazz); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java index 71426525ae5..2ebb9f25eb1 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java @@ -17,10 +17,13 @@ package com.mongodb.benchmark.benchmarks; +import com.mongodb.MongoClientSettings; import com.mongodb.benchmark.framework.Benchmark; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; +import java.util.List; + public abstract class AbstractMongoBenchmark extends Benchmark { protected static final int GRIDFS_READING_THREAD_POOL_SIZE = 8; @@ -33,12 +36,21 @@ public abstract class AbstractMongoBenchmark extends Benchmark { protected static final String DATABASE_NAME = "perftest"; protected static final String COLLECTION_NAME = "corpus"; + protected MongoClientSettings mongoClientSettings; + public AbstractMongoBenchmark(final List tags, + final String name) { + super(tags, name); + } protected MongoClient client; public void setUp() throws Exception { - client = MongoClients.create(); + if (mongoClientSettings != null) { + client = MongoClients.create(mongoClientSettings); + } else { + client = MongoClients.create(); + } } @Override @@ -46,4 +58,8 @@ public void tearDown() throws Exception { client.close(); } + public AbstractMongoBenchmark applyMongoClientSettings(final MongoClientSettings mongoClientSettings) { + this.mongoClientSettings = mongoClientSettings; + return this; + } } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java index 2260e0ed80a..715de021921 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/BenchmarkSuite.java @@ -35,16 +35,16 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public class BenchmarkSuite { - private static final int NUM_WARMUP_ITERATIONS = 1; - private static final int NUM_ITERATIONS = 100; - private static final int MIN_TIME_SECONDS = 60; - private static final int MAX_TIME_SECONDS = 300; + protected static final int NUM_WARMUP_ITERATIONS = 1; + protected static final int NUM_ITERATIONS = 100; + protected static final int MIN_TIME_SECONDS = 60; + protected static final int MAX_TIME_SECONDS = 300; - private static final Class DOCUMENT_CLASS = Document.class; - private static final IdRemover ID_REMOVER = document -> document.remove("_id"); - private static final Codec DOCUMENT_CODEC = getDefaultCodecRegistry().get(DOCUMENT_CLASS); + protected static final Class DOCUMENT_CLASS = Document.class; + protected static final IdRemover ID_REMOVER = document -> document.remove("_id"); + protected static final Codec DOCUMENT_CODEC = getDefaultCodecRegistry().get(DOCUMENT_CLASS); - private static final List WRITERS = Arrays.asList( + protected static final List WRITERS = Arrays.asList( new EvergreenBenchmarkResultWriter()); public static void main(String[] args) throws Exception { @@ -101,7 +101,7 @@ private static void runMongoCryptBenchMarks() throws InterruptedException { } } - private static void runBenchmark(final Benchmark benchmark) throws Exception { + protected static void runBenchmark(final Benchmark benchmark) throws Exception { long startTime = System.currentTimeMillis(); BenchmarkResult benchmarkResult = new BenchmarkRunner(benchmark, NUM_WARMUP_ITERATIONS, NUM_ITERATIONS, MIN_TIME_SECONDS, MAX_TIME_SECONDS).run(); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java index d848531fb8c..0a6433c9171 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java @@ -19,9 +19,19 @@ import com.mongodb.client.MongoCursor; +import java.util.Collections; +import java.util.List; + public class FindManyBenchmark extends AbstractFindBenchmark { + + private static final String TEST_NAME = "Find many and empty the cursor"; + public FindManyBenchmark(final String resourcePath, final Class clazz) { - super("Find many and empty the cursor", resourcePath, clazz); + this(Collections.emptyList(), resourcePath, clazz); + } + + public FindManyBenchmark(final List tags, final String resourcePath, final Class clazz) { + super(tags, TEST_NAME, resourcePath, clazz); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java index d0d7bd475fa..1c6d6bafdd4 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java @@ -21,10 +21,19 @@ import org.bson.BsonDocument; import org.bson.BsonInt32; +import java.util.Collections; +import java.util.List; + public class FindOneBenchmark extends AbstractFindBenchmark { + private static final String TEST_NAME = "Find one by ID"; + public FindOneBenchmark(final String resourcePath, Class clazz) { - super("Find one by ID", resourcePath, clazz); + this(Collections.emptyList(), resourcePath, clazz); + } + + public FindOneBenchmark(final List tags, final String resourcePath, Class clazz) { + super(tags, TEST_NAME, resourcePath, clazz); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java index 5a619c38cbe..7392b7eb98e 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java @@ -21,18 +21,20 @@ import org.bson.types.ObjectId; import java.io.ByteArrayInputStream; +import java.util.Collections; +import java.util.List; public class GridFSDownloadBenchmark extends AbstractGridFSBenchmark { + private static final String TEST_NAME = "GridFS download"; private ObjectId fileId; - public GridFSDownloadBenchmark(final String resourcePath) { - super(resourcePath); + public GridFSDownloadBenchmark(final List tags, final String resourcePath) { + super(tags, TEST_NAME, resourcePath); } - @Override - public String getName() { - return "GridFS download"; + public GridFSDownloadBenchmark(final String resourcePath) { + super(Collections.emptyList(), TEST_NAME, resourcePath); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java index 3a3a3a256ee..d65fc2c3ffe 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java @@ -29,13 +29,17 @@ import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; +import java.util.Collections; +import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; + public class GridFSMultiFileDownloadBenchmark extends AbstractMongoBenchmark { + public static final String TEST_NAME = "GridFS multi-file download"; private GridFSBucket bucket; private ExecutorService gridFSService; @@ -43,9 +47,12 @@ public class GridFSMultiFileDownloadBenchmark extends AbstractMongoBenchmark { private File tempDirectory; - @Override - public String getName() { - return "GridFS multi-file download"; + public GridFSMultiFileDownloadBenchmark(final List tags) { + super(tags, TEST_NAME); + } + + public GridFSMultiFileDownloadBenchmark() { + super(Collections.emptyList(), TEST_NAME); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java index 991c77a694f..4e8293d177c 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java @@ -27,21 +27,28 @@ import java.io.ByteArrayInputStream; import java.io.IOException; +import java.util.Collections; +import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; + public class GridFSMultiFileUploadBenchmark extends AbstractMongoBenchmark { + private static final String TEST_NAME = "GridFS multi-file upload"; private MongoDatabase database; private GridFSBucket bucket; private ExecutorService fileService; - @Override - public String getName() { - return "GridFS multi-file upload"; + public GridFSMultiFileUploadBenchmark(final List tags) { + super(tags, TEST_NAME); + } + + public GridFSMultiFileUploadBenchmark() { + super(Collections.emptyList(), TEST_NAME); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java index c0aed18680a..cb74fadb950 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java @@ -18,11 +18,18 @@ package com.mongodb.benchmark.benchmarks; import java.io.ByteArrayInputStream; +import java.util.Collections; +import java.util.List; public class GridFSUploadBenchmark extends AbstractGridFSBenchmark { + private static final String TEST_NAME = "GridFS upload"; + + public GridFSUploadBenchmark(final List tags, final String resourcePath) { + super(tags, TEST_NAME, resourcePath); + } public GridFSUploadBenchmark(final String resourcePath) { - super(resourcePath); + super(Collections.emptyList(), TEST_NAME, resourcePath); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java index 094520afcd2..0b7a6acc1da 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java @@ -18,6 +18,7 @@ package com.mongodb.benchmark.benchmarks; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class InsertManyBenchmark extends AbstractInsertBenchmark { @@ -25,7 +26,12 @@ public class InsertManyBenchmark extends AbstractInsertBenchmark { private final List documentList; public InsertManyBenchmark(final String name, final String resourcePath, final int numDocuments, final Class clazz) { - super(name + " doc bulk insert", resourcePath, clazz); + this(Collections.emptyList(), name, resourcePath, numDocuments, clazz); + } + + public InsertManyBenchmark(final List tags, final String name, final String resourcePath, final int numDocuments, + final Class clazz) { + super(tags, name + " doc bulk insert", resourcePath, clazz); this.numDocuments = numDocuments; documentList = new ArrayList<>(numDocuments); } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java index 575a5b4b235..67c84a3ef68 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java @@ -17,13 +17,22 @@ package com.mongodb.benchmark.benchmarks; +import java.util.Collections; +import java.util.List; + public class InsertOneBenchmark extends AbstractInsertBenchmark { private final int numIterations; private final IdRemover idRemover; public InsertOneBenchmark(final String name, final String resourcePath, final int numIterations, final Class clazz, final IdRemover idRemover) { - super(name + " doc insertOne", resourcePath, clazz); + this(Collections.emptyList(), name, resourcePath, numIterations, clazz, idRemover); + } + + public InsertOneBenchmark(final List tags, final String name, final String resourcePath, final int numIterations, + final Class clazz, + final IdRemover idRemover) { + super(tags, name + " doc insertOne", resourcePath, clazz); this.numIterations = numIterations; this.idRemover = idRemover; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java index 74f498f0a4d..d662dd18a22 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java @@ -42,14 +42,18 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +; + public class MultiFileExportBenchmark extends AbstractMongoBenchmark { + public static final String TEST_NAME = "LDJSON multi-file export"; private MongoDatabase database; private MongoCollection collection; @@ -58,9 +62,12 @@ public class MultiFileExportBenchmark extends AbstractMongoBenchmark { private ExecutorService documentReadingService; private File tempDirectory; - @Override - public String getName() { - return "LDJSON multi-file export"; + public MultiFileExportBenchmark() { + super(Collections.emptyList(), TEST_NAME); + } + + public MultiFileExportBenchmark(final List tags) { + super(tags, TEST_NAME); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java index 3bc76b69146..8a7597d88e7 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java @@ -31,13 +31,17 @@ import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +; + public class MultiFileImportBenchmark extends AbstractMongoBenchmark { + public static final String TEST_NAME = "LDJSON multi-file import"; private MongoDatabase database; private MongoCollection collection; @@ -45,6 +49,14 @@ public class MultiFileImportBenchmark extends AbstractMongoBenchmark { private ExecutorService fileReadingService; private ExecutorService documentWritingService; + public MultiFileImportBenchmark() { + super(Collections.emptyList(), TEST_NAME); + } + + public MultiFileImportBenchmark(final List tags) { + super(tags, TEST_NAME); + } + @Override public void setUp() throws Exception { super.setUp(); @@ -77,12 +89,6 @@ public void tearDown() throws Exception { super.tearDown(); } - @Override - public String getName() { - return "LDJSON multi-file import"; - } - - @Override public void run() throws InterruptedException { CountDownLatch latch = new CountDownLatch(500); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java index 6632b07b6af..3d19b6a136f 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java @@ -26,13 +26,24 @@ import org.bson.io.BasicOutputBuffer; import org.bson.json.JsonReader; +import java.util.Collections; +import java.util.List; + public class RunCommandBenchmark extends AbstractMongoBenchmark { + private static final String TEST_NAME = "Run command"; private MongoDatabase database; private final Codec codec; private final T command; public RunCommandBenchmark(final Codec codec) { + super(Collections.emptyList(), TEST_NAME); + this.codec = codec; + this.command = createCommand(); + } + + public RunCommandBenchmark(final List tags, final Codec codec) { + super(tags, TEST_NAME); this.codec = codec; this.command = createCommand(); } @@ -43,11 +54,6 @@ public void setUp() throws Exception { database = client.getDatabase("admin"); } - @Override - public String getName() { - return "Run command"; - } - @Override public void run() { for (int i = 0; i < NUM_INTERNAL_ITERATIONS; i++) { diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java new file mode 100644 index 00000000000..54d1736ee4d --- /dev/null +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java @@ -0,0 +1,93 @@ +/* + * Copyright 2016-present MongoDB, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.mongodb.benchmark.benchmarks.netty; + +import com.mongodb.MongoClientSettings; +import com.mongodb.benchmark.benchmarks.BenchmarkSuite; +import com.mongodb.benchmark.benchmarks.FindManyBenchmark; +import com.mongodb.benchmark.benchmarks.FindOneBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSDownloadBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSMultiFileDownloadBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSMultiFileUploadBenchmark; +import com.mongodb.benchmark.benchmarks.GridFSUploadBenchmark; +import com.mongodb.benchmark.benchmarks.InsertManyBenchmark; +import com.mongodb.benchmark.benchmarks.InsertOneBenchmark; +import com.mongodb.benchmark.benchmarks.MultiFileExportBenchmark; +import com.mongodb.benchmark.benchmarks.MultiFileImportBenchmark; +import com.mongodb.benchmark.benchmarks.RunCommandBenchmark; +import com.mongodb.benchmark.framework.BenchmarkResultWriter; +import com.mongodb.connection.NettyTransportSettings; +import io.netty.buffer.PooledByteBufAllocator; +import org.bson.Document; + +import java.util.List; + +import static java.util.Collections.singletonList; + +@SuppressWarnings({"rawtypes", "unchecked"}) +public class BenchmarkNettyProviderSuite extends BenchmarkSuite { + + public static final List TAGS = singletonList("Netty"); + public static final MongoClientSettings MONGO_CLIENT_SETTINGS = MongoClientSettings.builder() + .transportSettings(NettyTransportSettings.nettyBuilder() + .allocator(PooledByteBufAllocator.DEFAULT) + .build()) + .build(); + + public static void main(String[] args) throws Exception { + runBenchmarks(); + + for (BenchmarkResultWriter writer : WRITERS) { + writer.close(); + } + } + + private static void runBenchmarks() + throws Exception { + runBenchmark(new RunCommandBenchmark<>(TAGS, DOCUMENT_CODEC) + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new FindOneBenchmark(TAGS, "single_and_multi_document/tweet.json", + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new InsertOneBenchmark(TAGS, "Small", "./single_and_multi_document/small_doc.json", 10000, + DOCUMENT_CLASS, ID_REMOVER).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new InsertOneBenchmark(TAGS, "Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS, ID_REMOVER).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new FindManyBenchmark(TAGS, "single_and_multi_document/tweet.json", + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new InsertManyBenchmark(TAGS, "Small", "./single_and_multi_document/small_doc.json", 10000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new InsertManyBenchmark(TAGS, "Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new GridFSUploadBenchmark(TAGS, "single_and_multi_document/gridfs_large.bin") + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new GridFSDownloadBenchmark(TAGS, "single_and_multi_document/gridfs_large.bin") + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new MultiFileImportBenchmark(TAGS) + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new MultiFileExportBenchmark(TAGS) + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new GridFSMultiFileUploadBenchmark(TAGS) + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new GridFSMultiFileDownloadBenchmark(TAGS) + .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + } +} diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java index 9d1bac9c60d..19fafe33d54 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java @@ -24,11 +24,19 @@ import java.io.Reader; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.List; public abstract class Benchmark { protected static final int NUM_INTERNAL_ITERATIONS = 10000; static final String TEST_DATA_SYSTEM_PROPERTY_NAME = "org.mongodb.benchmarks.data"; + private List tags; + private String name; + + protected Benchmark(final List tags, final String name) { + this.tags = tags; + this.name = name; + } public void setUp() throws Exception { } @@ -42,7 +50,13 @@ public void before() throws Exception { public void after() throws Exception { } - public abstract String getName(); + public String getName() { + return name; + } + + public List getTags() { + return tags; + } public abstract void run() throws Exception; diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java index 0cd8f40d131..e4c4f94bfdf 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java @@ -26,13 +26,18 @@ public class BenchmarkResult { private final List elapsedTimeNanosList; private final List sortedElapsedTimeNanosList; private final int bytesPerRun; + final List tags; - public BenchmarkResult(final String name, final List elapsedTimeNanosList, final int bytesPerRun) { + public BenchmarkResult(final String name, + final List elapsedTimeNanosList, + final int bytesPerRun, + final List tags) { this.name = name; this.elapsedTimeNanosList = new ArrayList<>(elapsedTimeNanosList); this.bytesPerRun = bytesPerRun; this.sortedElapsedTimeNanosList = new ArrayList<>(elapsedTimeNanosList); Collections.sort(this.sortedElapsedTimeNanosList); + this.tags = tags; } public int getBytesPerIteration() { @@ -55,6 +60,10 @@ public int getNumIterations() { return elapsedTimeNanosList.size(); } + public List getTags() { + return tags; + } + @Override public String toString() { return "BenchmarkResult{" + diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java index 2233c8fe1a8..37f272494ab 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java @@ -70,7 +70,7 @@ public BenchmarkResult run() throws Exception { benchmark.tearDown(); - return new BenchmarkResult(benchmark.getName(), elapsedTimeNanosList, benchmark.getBytesPerRun()); + return new BenchmarkResult(benchmark.getName(), elapsedTimeNanosList, benchmark.getBytesPerRun(), benchmark.getTags()); } private boolean shouldContinue(final int iterationCount, final long totalTimeNanos) { diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java index f1e5361ffeb..1cdbc36e117 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java @@ -46,7 +46,13 @@ public void write(final BenchmarkResult benchmarkResult) { jsonWriter.writeStartDocument("info"); jsonWriter.writeString("test_name", benchmarkResult.getName()); - + if (!benchmarkResult.getTags().isEmpty()) { + jsonWriter.writeStartArray("tags"); + for (String tag : benchmarkResult.getTags()) { + jsonWriter.writeString(tag); + } + jsonWriter.writeEndArray(); + } jsonWriter.writeStartDocument("args"); jsonWriter.writeInt32("threads", 1); jsonWriter.writeEndDocument(); From 5c374d944b5ce8069482fcae63c5ec36c668113f Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Tue, 18 Mar 2025 18:38:58 -0700 Subject: [PATCH 02/10] Remove tag usage as it is not supported in perf.send JAVA-5813 --- .evergreen/.evg.yml | 2 +- .../AbstractBsonDocumentBenchmark.java | 3 +- .../benchmarks/AbstractFindBenchmark.java | 7 ++--- .../benchmarks/AbstractGridFSBenchmark.java | 8 ++--- .../benchmarks/AbstractInsertBenchmark.java | 8 ++--- .../benchmarks/AbstractMongoBenchmark.java | 7 ++--- .../benchmarks/FindManyBenchmark.java | 12 +------ .../benchmarks/FindOneBenchmark.java | 11 +------ .../benchmarks/GridFSDownloadBenchmark.java | 9 +----- .../GridFSMultiFileDownloadBenchmark.java | 9 +----- .../GridFSMultiFileUploadBenchmark.java | 10 ++---- .../benchmarks/GridFSUploadBenchmark.java | 14 +-------- .../benchmarks/InsertManyBenchmark.java | 8 +---- .../benchmarks/InsertOneBenchmark.java | 11 +------ .../benchmarks/MultiFileExportBenchmark.java | 10 +----- .../benchmarks/MultiFileImportBenchmark.java | 10 +----- .../benchmarks/RunCommandBenchmark.java | 12 +------ .../netty/BenchmarkNettyProviderSuite.java | 31 ++++++++----------- .../benchmark/framework/Benchmark.java | 9 +----- .../benchmark/framework/BenchmarkResult.java | 11 +------ .../benchmark/framework/BenchmarkRunner.java | 2 +- .../EvergreenBenchmarkResultWriter.java | 8 +---- 22 files changed, 39 insertions(+), 173 deletions(-) diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index 4dfca6595fb..02f12860680 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -2329,7 +2329,7 @@ buildvariants: run_on: rhel90-dbx-perf-large tasks: - name: "perf" - - name: "netty-perf" + - name: "perf-netty" - name: plain-auth-test display_name: "PLAIN (LDAP) Auth test" diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java index 64a5e72ea34..89f932f03cd 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractBsonDocumentBenchmark.java @@ -29,7 +29,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.Collections; public abstract class AbstractBsonDocumentBenchmark extends Benchmark { @@ -42,7 +41,7 @@ public abstract class AbstractBsonDocumentBenchmark extends Benchmark { private int fileLength; public AbstractBsonDocumentBenchmark(final String name, final String resourcePath, final Codec codec) { - super(Collections.emptyList(), name); + super(name); this.resourcePath = resourcePath; this.codec = codec; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java index 5b73a2682b5..df3eda6d14d 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractFindBenchmark.java @@ -37,11 +37,8 @@ public abstract class AbstractFindBenchmark extends AbstractMongoBenchmark { private int fileLength; - public AbstractFindBenchmark(final List tags, - final String name, - final String resourcePath, - final Class clazz) { - super(tags, name); + public AbstractFindBenchmark(final String name, final String resourcePath, final Class clazz) { + super(name); this.resourcePath = resourcePath; this.clazz = clazz; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java index 021555486cf..aeaf908e0a3 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractGridFSBenchmark.java @@ -21,18 +21,14 @@ import com.mongodb.client.gridfs.GridFSBucket; import com.mongodb.client.gridfs.GridFSBuckets; -import java.util.List; - public abstract class AbstractGridFSBenchmark extends AbstractMongoBenchmark { private final String resourcePath; protected MongoDatabase database; protected GridFSBucket bucket; protected byte[] fileBytes; - public AbstractGridFSBenchmark(final List tags, - final String name, - final String resourcePath) { - super(tags, name); + public AbstractGridFSBenchmark(final String name, final String resourcePath) { + super(name); this.resourcePath = resourcePath; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java index 8e071324d32..4e593db4916 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractInsertBenchmark.java @@ -24,7 +24,6 @@ import org.bson.json.JsonReader; import java.nio.charset.StandardCharsets; -import java.util.List; public abstract class AbstractInsertBenchmark extends AbstractMongoBenchmark { @@ -36,11 +35,8 @@ public abstract class AbstractInsertBenchmark extends AbstractMongoBenchmark protected int fileLength; protected T document; - protected AbstractInsertBenchmark(final List tags, - final String name, - final String resourcePath, - final Class clazz) { - super(tags, name); + protected AbstractInsertBenchmark(final String name, final String resourcePath, final Class clazz) { + super(name); this.resourcePath = resourcePath; this.clazz = clazz; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java index 2ebb9f25eb1..64b97e1e727 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractMongoBenchmark.java @@ -22,8 +22,6 @@ import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; -import java.util.List; - public abstract class AbstractMongoBenchmark extends Benchmark { protected static final int GRIDFS_READING_THREAD_POOL_SIZE = 8; @@ -38,9 +36,8 @@ public abstract class AbstractMongoBenchmark extends Benchmark { protected static final String COLLECTION_NAME = "corpus"; protected MongoClientSettings mongoClientSettings; - public AbstractMongoBenchmark(final List tags, - final String name) { - super(tags, name); + public AbstractMongoBenchmark(final String name) { + super(name); } protected MongoClient client; diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java index 0a6433c9171..d848531fb8c 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindManyBenchmark.java @@ -19,19 +19,9 @@ import com.mongodb.client.MongoCursor; -import java.util.Collections; -import java.util.List; - public class FindManyBenchmark extends AbstractFindBenchmark { - - private static final String TEST_NAME = "Find many and empty the cursor"; - public FindManyBenchmark(final String resourcePath, final Class clazz) { - this(Collections.emptyList(), resourcePath, clazz); - } - - public FindManyBenchmark(final List tags, final String resourcePath, final Class clazz) { - super(tags, TEST_NAME, resourcePath, clazz); + super("Find many and empty the cursor", resourcePath, clazz); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java index 1c6d6bafdd4..d0d7bd475fa 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/FindOneBenchmark.java @@ -21,19 +21,10 @@ import org.bson.BsonDocument; import org.bson.BsonInt32; -import java.util.Collections; -import java.util.List; - public class FindOneBenchmark extends AbstractFindBenchmark { - private static final String TEST_NAME = "Find one by ID"; - public FindOneBenchmark(final String resourcePath, Class clazz) { - this(Collections.emptyList(), resourcePath, clazz); - } - - public FindOneBenchmark(final List tags, final String resourcePath, Class clazz) { - super(tags, TEST_NAME, resourcePath, clazz); + super("Find one by ID", resourcePath, clazz); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java index 7392b7eb98e..71a71900771 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSDownloadBenchmark.java @@ -21,20 +21,13 @@ import org.bson.types.ObjectId; import java.io.ByteArrayInputStream; -import java.util.Collections; -import java.util.List; public class GridFSDownloadBenchmark extends AbstractGridFSBenchmark { - private static final String TEST_NAME = "GridFS download"; private ObjectId fileId; - public GridFSDownloadBenchmark(final List tags, final String resourcePath) { - super(tags, TEST_NAME, resourcePath); - } - public GridFSDownloadBenchmark(final String resourcePath) { - super(Collections.emptyList(), TEST_NAME, resourcePath); + super("GridFS download", resourcePath); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java index d65fc2c3ffe..e39c0fb46ba 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileDownloadBenchmark.java @@ -29,8 +29,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; -import java.util.Collections; -import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -39,7 +37,6 @@ public class GridFSMultiFileDownloadBenchmark extends AbstractMongoBenchmark { - public static final String TEST_NAME = "GridFS multi-file download"; private GridFSBucket bucket; private ExecutorService gridFSService; @@ -47,12 +44,8 @@ public class GridFSMultiFileDownloadBenchmark extends AbstractMongoBenchmark { private File tempDirectory; - public GridFSMultiFileDownloadBenchmark(final List tags) { - super(tags, TEST_NAME); - } - public GridFSMultiFileDownloadBenchmark() { - super(Collections.emptyList(), TEST_NAME); + super("GridFS multi-file download"); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java index 4e8293d177c..59f34036022 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java @@ -27,8 +27,6 @@ import java.io.ByteArrayInputStream; import java.io.IOException; -import java.util.Collections; -import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -37,20 +35,16 @@ public class GridFSMultiFileUploadBenchmark extends AbstractMongoBenchmark { - private static final String TEST_NAME = "GridFS multi-file upload"; private MongoDatabase database; private GridFSBucket bucket; private ExecutorService fileService; - public GridFSMultiFileUploadBenchmark(final List tags) { - super(tags, TEST_NAME); - } - public GridFSMultiFileUploadBenchmark() { - super(Collections.emptyList(), TEST_NAME); + super("GridFS multi-file upload"); } + @Override public void setUp() throws Exception { super.setUp(); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java index cb74fadb950..2181f89be5a 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSUploadBenchmark.java @@ -18,23 +18,11 @@ package com.mongodb.benchmark.benchmarks; import java.io.ByteArrayInputStream; -import java.util.Collections; -import java.util.List; public class GridFSUploadBenchmark extends AbstractGridFSBenchmark { - private static final String TEST_NAME = "GridFS upload"; - - public GridFSUploadBenchmark(final List tags, final String resourcePath) { - super(tags, TEST_NAME, resourcePath); - } public GridFSUploadBenchmark(final String resourcePath) { - super(Collections.emptyList(), TEST_NAME, resourcePath); - } - - @Override - public String getName() { - return "GridFS upload"; + super("GridFS upload", resourcePath); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java index 0b7a6acc1da..094520afcd2 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertManyBenchmark.java @@ -18,7 +18,6 @@ package com.mongodb.benchmark.benchmarks; import java.util.ArrayList; -import java.util.Collections; import java.util.List; public class InsertManyBenchmark extends AbstractInsertBenchmark { @@ -26,12 +25,7 @@ public class InsertManyBenchmark extends AbstractInsertBenchmark { private final List documentList; public InsertManyBenchmark(final String name, final String resourcePath, final int numDocuments, final Class clazz) { - this(Collections.emptyList(), name, resourcePath, numDocuments, clazz); - } - - public InsertManyBenchmark(final List tags, final String name, final String resourcePath, final int numDocuments, - final Class clazz) { - super(tags, name + " doc bulk insert", resourcePath, clazz); + super(name + " doc bulk insert", resourcePath, clazz); this.numDocuments = numDocuments; documentList = new ArrayList<>(numDocuments); } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java index 67c84a3ef68..575a5b4b235 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/InsertOneBenchmark.java @@ -17,22 +17,13 @@ package com.mongodb.benchmark.benchmarks; -import java.util.Collections; -import java.util.List; - public class InsertOneBenchmark extends AbstractInsertBenchmark { private final int numIterations; private final IdRemover idRemover; public InsertOneBenchmark(final String name, final String resourcePath, final int numIterations, final Class clazz, final IdRemover idRemover) { - this(Collections.emptyList(), name, resourcePath, numIterations, clazz, idRemover); - } - - public InsertOneBenchmark(final List tags, final String name, final String resourcePath, final int numIterations, - final Class clazz, - final IdRemover idRemover) { - super(tags, name + " doc insertOne", resourcePath, clazz); + super(name + " doc insertOne", resourcePath, clazz); this.numIterations = numIterations; this.idRemover = idRemover; } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java index d662dd18a22..30c74084419 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileExportBenchmark.java @@ -42,18 +42,14 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -; - public class MultiFileExportBenchmark extends AbstractMongoBenchmark { - public static final String TEST_NAME = "LDJSON multi-file export"; private MongoDatabase database; private MongoCollection collection; @@ -63,11 +59,7 @@ public class MultiFileExportBenchmark extends AbstractMongoBenchmark { private File tempDirectory; public MultiFileExportBenchmark() { - super(Collections.emptyList(), TEST_NAME); - } - - public MultiFileExportBenchmark(final List tags) { - super(tags, TEST_NAME); + super("LDJSON multi-file export"); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java index 8a7597d88e7..03d1a721bee 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/MultiFileImportBenchmark.java @@ -31,17 +31,13 @@ import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -; - public class MultiFileImportBenchmark extends AbstractMongoBenchmark { - public static final String TEST_NAME = "LDJSON multi-file import"; private MongoDatabase database; private MongoCollection collection; @@ -50,11 +46,7 @@ public class MultiFileImportBenchmark extends AbstractMongoBenchmark { private ExecutorService documentWritingService; public MultiFileImportBenchmark() { - super(Collections.emptyList(), TEST_NAME); - } - - public MultiFileImportBenchmark(final List tags) { - super(tags, TEST_NAME); + super("LDJSON multi-file import"); } @Override diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java index 3d19b6a136f..ba90066a349 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/RunCommandBenchmark.java @@ -26,24 +26,14 @@ import org.bson.io.BasicOutputBuffer; import org.bson.json.JsonReader; -import java.util.Collections; -import java.util.List; - public class RunCommandBenchmark extends AbstractMongoBenchmark { - private static final String TEST_NAME = "Run command"; private MongoDatabase database; private final Codec codec; private final T command; public RunCommandBenchmark(final Codec codec) { - super(Collections.emptyList(), TEST_NAME); - this.codec = codec; - this.command = createCommand(); - } - - public RunCommandBenchmark(final List tags, final Codec codec) { - super(tags, TEST_NAME); + super("Run command"); this.codec = codec; this.command = createCommand(); } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java index 54d1736ee4d..47576354841 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java @@ -35,14 +35,9 @@ import io.netty.buffer.PooledByteBufAllocator; import org.bson.Document; -import java.util.List; - -import static java.util.Collections.singletonList; - @SuppressWarnings({"rawtypes", "unchecked"}) public class BenchmarkNettyProviderSuite extends BenchmarkSuite { - public static final List TAGS = singletonList("Netty"); public static final MongoClientSettings MONGO_CLIENT_SETTINGS = MongoClientSettings.builder() .transportSettings(NettyTransportSettings.nettyBuilder() .allocator(PooledByteBufAllocator.DEFAULT) @@ -59,35 +54,35 @@ public static void main(String[] args) throws Exception { private static void runBenchmarks() throws Exception { - runBenchmark(new RunCommandBenchmark<>(TAGS, DOCUMENT_CODEC) + runBenchmark(new RunCommandBenchmark<>(DOCUMENT_CODEC) .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new FindOneBenchmark(TAGS, "single_and_multi_document/tweet.json", + runBenchmark(new FindOneBenchmark("single_and_multi_document/tweet.json", DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new InsertOneBenchmark(TAGS, "Small", "./single_and_multi_document/small_doc.json", 10000, + runBenchmark(new InsertOneBenchmark("Small", "./single_and_multi_document/small_doc.json", 10000, DOCUMENT_CLASS, ID_REMOVER).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new InsertOneBenchmark(TAGS, "Large", "./single_and_multi_document/large_doc.json", 10, + runBenchmark(new InsertOneBenchmark("Large", "./single_and_multi_document/large_doc.json", 10, DOCUMENT_CLASS, ID_REMOVER).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new FindManyBenchmark(TAGS, "single_and_multi_document/tweet.json", + runBenchmark(new FindManyBenchmark("single_and_multi_document/tweet.json", DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new InsertManyBenchmark(TAGS, "Small", "./single_and_multi_document/small_doc.json", 10000, + runBenchmark(new InsertManyBenchmark("Small", "./single_and_multi_document/small_doc.json", 10000, DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new InsertManyBenchmark(TAGS, "Large", "./single_and_multi_document/large_doc.json", 10, + runBenchmark(new InsertManyBenchmark("Large", "./single_and_multi_document/large_doc.json", 10, DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new GridFSUploadBenchmark(TAGS, "single_and_multi_document/gridfs_large.bin") + runBenchmark(new GridFSUploadBenchmark("single_and_multi_document/gridfs_large.bin") .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new GridFSDownloadBenchmark(TAGS, "single_and_multi_document/gridfs_large.bin") + runBenchmark(new GridFSDownloadBenchmark("single_and_multi_document/gridfs_large.bin") .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new MultiFileImportBenchmark(TAGS) + runBenchmark(new MultiFileImportBenchmark() .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new MultiFileExportBenchmark(TAGS) + runBenchmark(new MultiFileExportBenchmark() .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new GridFSMultiFileUploadBenchmark(TAGS) + runBenchmark(new GridFSMultiFileUploadBenchmark() .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new GridFSMultiFileDownloadBenchmark(TAGS) + runBenchmark(new GridFSMultiFileDownloadBenchmark() .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); } } diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java index 19fafe33d54..3715887d900 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/Benchmark.java @@ -24,17 +24,14 @@ import java.io.Reader; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.List; public abstract class Benchmark { protected static final int NUM_INTERNAL_ITERATIONS = 10000; static final String TEST_DATA_SYSTEM_PROPERTY_NAME = "org.mongodb.benchmarks.data"; - private List tags; private String name; - protected Benchmark(final List tags, final String name) { - this.tags = tags; + protected Benchmark(final String name) { this.name = name; } @@ -54,10 +51,6 @@ public String getName() { return name; } - public List getTags() { - return tags; - } - public abstract void run() throws Exception; public abstract int getBytesPerRun(); diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java index e4c4f94bfdf..0cd8f40d131 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkResult.java @@ -26,18 +26,13 @@ public class BenchmarkResult { private final List elapsedTimeNanosList; private final List sortedElapsedTimeNanosList; private final int bytesPerRun; - final List tags; - public BenchmarkResult(final String name, - final List elapsedTimeNanosList, - final int bytesPerRun, - final List tags) { + public BenchmarkResult(final String name, final List elapsedTimeNanosList, final int bytesPerRun) { this.name = name; this.elapsedTimeNanosList = new ArrayList<>(elapsedTimeNanosList); this.bytesPerRun = bytesPerRun; this.sortedElapsedTimeNanosList = new ArrayList<>(elapsedTimeNanosList); Collections.sort(this.sortedElapsedTimeNanosList); - this.tags = tags; } public int getBytesPerIteration() { @@ -60,10 +55,6 @@ public int getNumIterations() { return elapsedTimeNanosList.size(); } - public List getTags() { - return tags; - } - @Override public String toString() { return "BenchmarkResult{" + diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java index 37f272494ab..2233c8fe1a8 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/BenchmarkRunner.java @@ -70,7 +70,7 @@ public BenchmarkResult run() throws Exception { benchmark.tearDown(); - return new BenchmarkResult(benchmark.getName(), elapsedTimeNanosList, benchmark.getBytesPerRun(), benchmark.getTags()); + return new BenchmarkResult(benchmark.getName(), elapsedTimeNanosList, benchmark.getBytesPerRun()); } private boolean shouldContinue(final int iterationCount, final long totalTimeNanos) { diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java index 1cdbc36e117..f1e5361ffeb 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/framework/EvergreenBenchmarkResultWriter.java @@ -46,13 +46,7 @@ public void write(final BenchmarkResult benchmarkResult) { jsonWriter.writeStartDocument("info"); jsonWriter.writeString("test_name", benchmarkResult.getName()); - if (!benchmarkResult.getTags().isEmpty()) { - jsonWriter.writeStartArray("tags"); - for (String tag : benchmarkResult.getTags()) { - jsonWriter.writeString(tag); - } - jsonWriter.writeEndArray(); - } + jsonWriter.writeStartDocument("args"); jsonWriter.writeInt32("threads", 1); jsonWriter.writeEndDocument(); From 21aec8d01ccca56caca4aa84d56810c7002d727b Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Tue, 18 Mar 2025 18:42:23 -0700 Subject: [PATCH 03/10] Remove logs. JAVA-5813 --- .evergreen/.evg.yml | 1 - .../benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java | 1 - 2 files changed, 2 deletions(-) diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index 02f12860680..a8b53b2c9ff 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -784,7 +784,6 @@ functions: PROVIDER: ${PROVIDER} script: | ${PREPARE_SHELL} - echo "Running performance tests provider ${PROVIDER}" PROVIDER=${PROVIDER} PROJECT_DIRECTORY=${PROJECT_DIRECTORY} .evergreen/run-perf-tests.sh diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java index 59f34036022..cefdc7eaf1c 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/GridFSMultiFileUploadBenchmark.java @@ -44,7 +44,6 @@ public GridFSMultiFileUploadBenchmark() { super("GridFS multi-file upload"); } - @Override public void setUp() throws Exception { super.setUp(); From 0a435b7a479c4d04cbe5a01b61b7d905046857d9 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Tue, 18 Mar 2025 18:45:06 -0700 Subject: [PATCH 04/10] Remove PROVIDER expansion. JAVA-5813 --- .evergreen/.evg.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index a8b53b2c9ff..1e9345cd2b8 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -784,7 +784,6 @@ functions: PROVIDER: ${PROVIDER} script: | ${PREPARE_SHELL} - PROVIDER=${PROVIDER} PROJECT_DIRECTORY=${PROJECT_DIRECTORY} .evergreen/run-perf-tests.sh "send dashboard data": From c4b6b702646f9bef3a61f82dd2097bf5d9f8bb44 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Tue, 18 Mar 2025 18:48:56 -0700 Subject: [PATCH 05/10] Correct task name. JAVA-5813 --- .evergreen/.evg.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index 1e9345cd2b8..e4e0c681c55 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -1561,7 +1561,7 @@ tasks: - func: "run perf tests" - func: "send dashboard data" - - name: "netty-perf" + - name: "perf-netty" tags: [ "perf" ] commands: - func: "bootstrap mongo-orchestration" From eeaf99dd3d6e76941f81da8f4bf9b57e349555f7 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Wed, 26 Mar 2025 22:28:13 -0700 Subject: [PATCH 06/10] Fix merge conflicts. JAVA-5813 --- driver-benchmarks/build.gradle | 0 driver-benchmarks/build.gradle.kts | 13 +++++++++++++ 2 files changed, 13 insertions(+) delete mode 100644 driver-benchmarks/build.gradle diff --git a/driver-benchmarks/build.gradle b/driver-benchmarks/build.gradle deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/driver-benchmarks/build.gradle.kts b/driver-benchmarks/build.gradle.kts index eac033920e3..6387de8d058 100644 --- a/driver-benchmarks/build.gradle.kts +++ b/driver-benchmarks/build.gradle.kts @@ -37,9 +37,14 @@ sourceSets { dependencies { api(project(":driver-sync")) api(project(":mongodb-crypt")) + + implementation(platform(libs.netty.bom)) + implementation(libs.bundles.netty) + implementation(libs.logback.classic) implementation(libs.jmh.core) annotationProcessor(libs.jmh.generator.annprocess) + } tasks.register("jmh") { @@ -49,6 +54,14 @@ tasks.register("jmh") { classpath = sourceSets.main.get().runtimeClasspath } +tasks.register("runNetty") { + group = "application" + description = "Run the Netty main class." + mainClass.set("com.mongodb.benchmark.benchmarks.netty.BenchmarkNettyProviderSuite") + classpath = sourceSets["main"].runtimeClasspath + jvmArgs = application.applicationDefaultJvmArgs.toList() +} + tasks.withType().configureEach { enabled = false } From 37867bbe6d7d12e54f1133ca70aa8b1dd69da534 Mon Sep 17 00:00:00 2001 From: Viacheslav Babanin Date: Fri, 28 Mar 2025 11:46:16 -0700 Subject: [PATCH 07/10] Update MongoDB version to v8.0-perf --- .evergreen/.evg.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/.evg.yml b/.evergreen/.evg.yml index 24a1ec02f1a..00ab7b83e93 100644 --- a/.evergreen/.evg.yml +++ b/.evergreen/.evg.yml @@ -1567,7 +1567,7 @@ tasks: commands: - func: "bootstrap mongo-orchestration" vars: - VERSION: "v6.0-perf" + VERSION: "v8.0-perf" TOPOLOGY: "server" SSL: "nossl" AUTH: "noauth" From 2741a93aafaa363fb2d00b52bb280be54d52baa0 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Mon, 31 Mar 2025 13:44:08 -0700 Subject: [PATCH 08/10] Add ClientBulkWrite benchmarks to Netty suite. JAVA-5813 --- .../netty/BenchmarkNettyProviderSuite.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java index 47576354841..4c372a61f6a 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java @@ -30,6 +30,10 @@ import com.mongodb.benchmark.benchmarks.MultiFileExportBenchmark; import com.mongodb.benchmark.benchmarks.MultiFileImportBenchmark; import com.mongodb.benchmark.benchmarks.RunCommandBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.ClientBulkWriteBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.CollectionBulkWriteBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.MixedClientBulkWriteBenchmark; +import com.mongodb.benchmark.benchmarks.bulk.MixedCollectionBulkWriteBenchmark; import com.mongodb.benchmark.framework.BenchmarkResultWriter; import com.mongodb.connection.NettyTransportSettings; import io.netty.buffer.PooledByteBufAllocator; @@ -76,6 +80,21 @@ private static void runBenchmarks() runBenchmark(new GridFSDownloadBenchmark("single_and_multi_document/gridfs_large.bin") .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new CollectionBulkWriteBenchmark<>("Small", "./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new CollectionBulkWriteBenchmark<>("Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS)); + + runBenchmark(new ClientBulkWriteBenchmark<>("Small", "./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new ClientBulkWriteBenchmark<>("Large", "./single_and_multi_document/large_doc.json", 10, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + + runBenchmark(new MixedCollectionBulkWriteBenchmark<>("./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new MixedClientBulkWriteBenchmark<>("./single_and_multi_document/small_doc.json", 10_000, + DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); + runBenchmark(new MultiFileImportBenchmark() .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); runBenchmark(new MultiFileExportBenchmark() From cb09c14f9d0a4c0115bb63837f7b7cc6132cf837 Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Mon, 31 Mar 2025 13:48:31 -0700 Subject: [PATCH 09/10] Remove redundant fields. JAVA-5813 --- .../benchmarks/AbstractCollectionWriteBenchmark.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java index 38a4b1104b5..a77d4f671f3 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/AbstractCollectionWriteBenchmark.java @@ -24,8 +24,6 @@ public abstract class AbstractCollectionWriteBenchmark extends AbstractWriteB protected MongoCollection collection; protected MongoDatabase database; - - private final String name; private final Class clazz; protected AbstractCollectionWriteBenchmark(final String name, @@ -34,7 +32,6 @@ protected AbstractCollectionWriteBenchmark(final String name, int numDocuments, final Class clazz) { super(name, resourcePath, numIterations, numDocuments, clazz); - this.name = name; this.clazz = clazz; } @@ -51,9 +48,4 @@ public void before() throws Exception { super.before(); collection.drop(); } - - @Override - public String getName() { - return name; - } } From c1b5c5e89158280b9892400877d8987656f7ea4d Mon Sep 17 00:00:00 2001 From: "slav.babanin" Date: Tue, 1 Apr 2025 17:57:54 -0700 Subject: [PATCH 10/10] Make path consistent, JAVA-5813 --- .../benchmarks/netty/BenchmarkNettyProviderSuite.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java index 4c372a61f6a..5e142376940 100644 --- a/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java +++ b/driver-benchmarks/src/main/com/mongodb/benchmark/benchmarks/netty/BenchmarkNettyProviderSuite.java @@ -60,7 +60,7 @@ private static void runBenchmarks() throws Exception { runBenchmark(new RunCommandBenchmark<>(DOCUMENT_CODEC) .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new FindOneBenchmark("single_and_multi_document/tweet.json", + runBenchmark(new FindOneBenchmark("./single_and_multi_document/tweet.json", DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); runBenchmark(new InsertOneBenchmark("Small", "./single_and_multi_document/small_doc.json", 10000, @@ -68,16 +68,16 @@ private static void runBenchmarks() runBenchmark(new InsertOneBenchmark("Large", "./single_and_multi_document/large_doc.json", 10, DOCUMENT_CLASS, ID_REMOVER).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new FindManyBenchmark("single_and_multi_document/tweet.json", + runBenchmark(new FindManyBenchmark("./single_and_multi_document/tweet.json", DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); runBenchmark(new InsertManyBenchmark("Small", "./single_and_multi_document/small_doc.json", 10000, DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); runBenchmark(new InsertManyBenchmark("Large", "./single_and_multi_document/large_doc.json", 10, DOCUMENT_CLASS).applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new GridFSUploadBenchmark("single_and_multi_document/gridfs_large.bin") + runBenchmark(new GridFSUploadBenchmark("./single_and_multi_document/gridfs_large.bin") .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); - runBenchmark(new GridFSDownloadBenchmark("single_and_multi_document/gridfs_large.bin") + runBenchmark(new GridFSDownloadBenchmark("./single_and_multi_document/gridfs_large.bin") .applyMongoClientSettings(MONGO_CLIENT_SETTINGS)); runBenchmark(new CollectionBulkWriteBenchmark<>("Small", "./single_and_multi_document/small_doc.json", 10_000,