mirror of
https://github.com/usatiuk/dhfs.git
synced 2025-10-28 20:47:49 +01:00
cleanup dependencies a little
This commit is contained in:
@@ -23,22 +23,10 @@
|
|||||||
<artifactId>awaitility</artifactId>
|
<artifactId>awaitility</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.bouncycastle</groupId>
|
|
||||||
<artifactId>bcprov-jdk18on</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.bouncycastle</groupId>
|
|
||||||
<artifactId>bcpkix-jdk18on</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-security</artifactId>
|
<artifactId>quarkus-security</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.openhft</groupId>
|
|
||||||
<artifactId>zero-allocation-hashing</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-grpc</artifactId>
|
<artifactId>quarkus-grpc</artifactId>
|
||||||
@@ -47,22 +35,6 @@
|
|||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-arc</artifactId>
|
<artifactId>quarkus-arc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest-client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest-client-jsonb</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest-jsonb</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-scheduler</artifactId>
|
<artifactId>quarkus-scheduler</artifactId>
|
||||||
@@ -85,10 +57,6 @@
|
|||||||
<artifactId>slf4j-jboss-logmanager</artifactId>
|
<artifactId>slf4j-jboss-logmanager</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>commons-codec</groupId>
|
|
||||||
<artifactId>commons-codec</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-collections4</artifactId>
|
<artifactId>commons-collections4</artifactId>
|
||||||
@@ -97,11 +65,6 @@
|
|||||||
<groupId>org.pcollections</groupId>
|
<groupId>org.pcollections</groupId>
|
||||||
<artifactId>pcollections</artifactId>
|
<artifactId>pcollections</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.commons</groupId>
|
|
||||||
<artifactId>commons-math3</artifactId>
|
|
||||||
<version>3.6.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.usatiuk.dhfs</groupId>
|
<groupId>com.usatiuk.dhfs</groupId>
|
||||||
<artifactId>sync-base</artifactId>
|
<artifactId>sync-base</artifactId>
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
package com.usatiuk.dhfsfs.benchmarks;
|
|
||||||
|
|
||||||
import io.quarkus.logging.Log;
|
|
||||||
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
public class Benchmarker {
|
|
||||||
static <T> long[] runLatency(Supplier<T> fn, int iterations) {
|
|
||||||
var out = new long[iterations];
|
|
||||||
|
|
||||||
int hash = 1;
|
|
||||||
|
|
||||||
for (int i = 0; i < iterations; i++) {
|
|
||||||
long startNanos = System.nanoTime();
|
|
||||||
var cur = fn.get();
|
|
||||||
long stopNanos = System.nanoTime();
|
|
||||||
out[i] = stopNanos - startNanos;
|
|
||||||
hash = hash * 31 + cur.hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("\nHash: " + hash);
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
static <T> long[] runThroughput(Supplier<T> fn, int iterations, long iterationTime) {
|
|
||||||
var out = new long[iterations];
|
|
||||||
|
|
||||||
int hash = 1;
|
|
||||||
|
|
||||||
for (int i = 0; i < iterations; i++) {
|
|
||||||
long startMillis = System.currentTimeMillis();
|
|
||||||
long count = 0;
|
|
||||||
// FIXME: That's probably janky
|
|
||||||
while (System.currentTimeMillis() - startMillis < iterationTime) {
|
|
||||||
var res = fn.get();
|
|
||||||
count++;
|
|
||||||
hash = hash * 31 + res.hashCode();
|
|
||||||
}
|
|
||||||
System.out.println("Ran iteration " + i + "/" + iterations + " count=" + count);
|
|
||||||
out[i] = count;
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("\nHash: " + hash);
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void printStats(double[] data, String unit) {
|
|
||||||
DescriptiveStatistics stats = new DescriptiveStatistics();
|
|
||||||
for (var r : data) {
|
|
||||||
stats.addValue(r);
|
|
||||||
}
|
|
||||||
Log.info("\n" + stats +
|
|
||||||
"\n 50%: " + stats.getPercentile(50) + " " + unit +
|
|
||||||
"\n 90%: " + stats.getPercentile(90) + " " + unit +
|
|
||||||
"\n 95%: " + stats.getPercentile(95) + " " + unit +
|
|
||||||
"\n 99%: " + stats.getPercentile(99) + " " + unit +
|
|
||||||
"\n 99.9%: " + stats.getPercentile(99.9) + " " + unit +
|
|
||||||
"\n 99.99%: " + stats.getPercentile(99.99) + " " + unit
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static <T> void runAndPrintMixSimple(String name, Supplier<T> fn, int latencyIterations, int thrptIterations, int thrptIterationTime, int warmupIterations, int warmupIterationTime) {
|
|
||||||
System.out.println("\n=========\n" + "Running " + name + "\n=========\n");
|
|
||||||
System.out.println("==Warmup==");
|
|
||||||
runThroughput(fn, warmupIterations, warmupIterationTime);
|
|
||||||
System.out.println("==Warmup done==");
|
|
||||||
System.out.println("==Throughput==");
|
|
||||||
var thrpt = runThroughput(fn, thrptIterations, thrptIterationTime);
|
|
||||||
printStats(Arrays.stream(thrpt).mapToDouble(o -> (double) o / 1000).toArray(), "ops/s");
|
|
||||||
System.out.println("==Throughput done==");
|
|
||||||
System.out.println("==Latency==");
|
|
||||||
var lat = runLatency(fn, latencyIterations);
|
|
||||||
printStats(Arrays.stream(lat).mapToDouble(o -> (double) o).toArray(), "ns/op");
|
|
||||||
System.out.println("==Latency done==");
|
|
||||||
System.out.println("\n=========\n" + name + " done" + "\n=========\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
package com.usatiuk.dhfsfs.benchmarks;
|
|
||||||
|
|
||||||
import com.google.protobuf.UnsafeByteOperations;
|
|
||||||
import com.usatiuk.dhfsfs.TempDataProfile;
|
|
||||||
import com.usatiuk.dhfsfs.service.DhfsFileService;
|
|
||||||
import com.usatiuk.objects.JObjectKey;
|
|
||||||
import io.quarkus.test.junit.QuarkusTest;
|
|
||||||
import io.quarkus.test.junit.TestProfile;
|
|
||||||
import jakarta.inject.Inject;
|
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
class Profiles {
|
|
||||||
public static class DhfsFuseTestProfile extends TempDataProfile {
|
|
||||||
@Override
|
|
||||||
protected void getConfigOverrides(Map<String, String> ret) {
|
|
||||||
ret.put("quarkus.log.category.\"com.usatiuk.dhfs\".level", "INFO");
|
|
||||||
ret.put("dhfs.fuse.enabled", "false");
|
|
||||||
ret.put("dhfs.objects.ref_verification", "false");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@QuarkusTest
|
|
||||||
@TestProfile(Profiles.DhfsFuseTestProfile.class)
|
|
||||||
public class DhfsFileBenchmarkTest {
|
|
||||||
@Inject
|
|
||||||
DhfsFileService dhfsFileService;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Disabled
|
|
||||||
void openRootTest() {
|
|
||||||
Benchmarker.runAndPrintMixSimple("dhfsFileService.open(\"\")",
|
|
||||||
() -> {
|
|
||||||
return dhfsFileService.open("");
|
|
||||||
}, 1_000_000, 5, 1000, 5, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Disabled
|
|
||||||
void writeMbTest() {
|
|
||||||
JObjectKey file = dhfsFileService.create("/writeMbTest", 0777).get();
|
|
||||||
var bb = ByteBuffer.allocateDirect(1024 * 1024);
|
|
||||||
Benchmarker.runAndPrintMixSimple("dhfsFileService.write(\"\")",
|
|
||||||
() -> {
|
|
||||||
var thing = UnsafeByteOperations.unsafeWrap(bb);
|
|
||||||
return dhfsFileService.write(file, dhfsFileService.size(file), thing);
|
|
||||||
}, 1_000, 10, 100, 1, 100);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -23,22 +23,10 @@
|
|||||||
<artifactId>awaitility</artifactId>
|
<artifactId>awaitility</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.bouncycastle</groupId>
|
|
||||||
<artifactId>bcprov-jdk18on</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.bouncycastle</groupId>
|
|
||||||
<artifactId>bcpkix-jdk18on</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-security</artifactId>
|
<artifactId>quarkus-security</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.openhft</groupId>
|
|
||||||
<artifactId>zero-allocation-hashing</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-grpc</artifactId>
|
<artifactId>quarkus-grpc</artifactId>
|
||||||
@@ -47,14 +35,6 @@
|
|||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-arc</artifactId>
|
<artifactId>quarkus-arc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest-client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-rest-client-jsonb</artifactId>
|
<artifactId>quarkus-rest-client-jsonb</artifactId>
|
||||||
@@ -90,10 +70,6 @@
|
|||||||
<artifactId>slf4j-jboss-logmanager</artifactId>
|
<artifactId>slf4j-jboss-logmanager</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>commons-codec</groupId>
|
|
||||||
<artifactId>commons-codec</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-collections4</artifactId>
|
<artifactId>commons-collections4</artifactId>
|
||||||
@@ -102,11 +78,6 @@
|
|||||||
<groupId>org.pcollections</groupId>
|
<groupId>org.pcollections</groupId>
|
||||||
<artifactId>pcollections</artifactId>
|
<artifactId>pcollections</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.commons</groupId>
|
|
||||||
<artifactId>commons-math3</artifactId>
|
|
||||||
<version>3.6.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.usatiuk.dhfs</groupId>
|
<groupId>com.usatiuk.dhfs</groupId>
|
||||||
<artifactId>dhfs-fs</artifactId>
|
<artifactId>dhfs-fs</artifactId>
|
||||||
|
|||||||
@@ -36,10 +36,6 @@
|
|||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-grpc</artifactId>
|
<artifactId>quarkus-grpc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.openhft</groupId>
|
|
||||||
<artifactId>zero-allocation-hashing</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<artifactId>junit-jupiter-engine</artifactId>
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
|||||||
@@ -54,11 +54,6 @@
|
|||||||
<version>1.18.34</version>
|
<version>1.18.34</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.openhft</groupId>
|
|
||||||
<artifactId>zero-allocation-hashing</artifactId>
|
|
||||||
<version>0.16</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.awaitility</groupId>
|
<groupId>org.awaitility</groupId>
|
||||||
<artifactId>awaitility</artifactId>
|
<artifactId>awaitility</artifactId>
|
||||||
|
|||||||
@@ -13,10 +13,6 @@
|
|||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-smallrye-openapi</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.testcontainers</groupId>
|
<groupId>org.testcontainers</groupId>
|
||||||
<artifactId>testcontainers</artifactId>
|
<artifactId>testcontainers</artifactId>
|
||||||
@@ -39,10 +35,6 @@
|
|||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-security</artifactId>
|
<artifactId>quarkus-security</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.openhft</groupId>
|
|
||||||
<artifactId>zero-allocation-hashing</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-grpc</artifactId>
|
<artifactId>quarkus-grpc</artifactId>
|
||||||
@@ -59,14 +51,6 @@
|
|||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-rest-client</artifactId>
|
<artifactId>quarkus-rest-client</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest-client-jsonb</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-rest-jsonb</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-scheduler</artifactId>
|
<artifactId>quarkus-scheduler</artifactId>
|
||||||
@@ -101,11 +85,6 @@
|
|||||||
<groupId>org.pcollections</groupId>
|
<groupId>org.pcollections</groupId>
|
||||||
<artifactId>pcollections</artifactId>
|
<artifactId>pcollections</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.commons</groupId>
|
|
||||||
<artifactId>commons-math3</artifactId>
|
|
||||||
<version>3.6.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.usatiuk</groupId>
|
<groupId>com.usatiuk</groupId>
|
||||||
<artifactId>kleppmanntree</artifactId>
|
<artifactId>kleppmanntree</artifactId>
|
||||||
|
|||||||
Reference in New Issue
Block a user