Skip to content

Instantly share code, notes, and snippets.

View carl-mastrangelo's full-sized avatar
💭
I may be slow to respond.

Carl Mastrangelo carl-mastrangelo

💭
I may be slow to respond.
View GitHub Profile
package io.grpc.examples;
import io.grpc.CallOptions;
import io.grpc.ClientCall;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.Metadata;
import io.grpc.MethodDescriptor;
import io.grpc.MethodDescriptor.Marshaller;
import io.grpc.MethodDescriptor.MethodType;
@carl-mastrangelo
carl-mastrangelo / gist:49f6d6a8ff29200fcb7d9e25e473b2d0
Last active January 27, 2017 18:42
How to Enable Netty Frame Logging for gRPC
# -Djava.util.logging.config.file=myLoggingConfigFilePath
handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL
.level = FINE
io.grpc.netty.NettyClientHandler = ALL
io.grpc.netty.NettyServerHandler = ALL
import random
import pprint
def run(tries):
count = 0
for i in range(tries):
if random.randrange(1<<count) <= 0:
count += 1
return count
/*
Benchmark Mode Cnt Score Error Units
AtomicBenchmark.compareAndSet sample 1665797 493.817 ± 2.426 ns/op
AtomicBenchmark.compareAndSet:compareAndSet·p0.00 sample 25.000 ns/op
AtomicBenchmark.compareAndSet:compareAndSet·p0.50 sample 274.000 ns/op
AtomicBenchmark.compareAndSet:compareAndSet·p0.90 sample 950.000 ns/op
AtomicBenchmark.compareAndSet:compareAndSet·p0.95 sample 1606.000 ns/op
AtomicBenchmark.compareAndSet:compareAndSet·p0.99 sample 3760.000 ns/op
openssl pkcs8 -inform PEM -nocrypt -topk8 -in $INFILE -outform PEM -out $OUTFILE
public class DelayedForwardingClientCall<ReqT, RespT>
extends ForwardingClientCall<ReqT, RespT>{
private final ClientCall<ReqT, RespT> delegate;
private final Queue<Runnable> calls = new ArrayDeque<Runnable>();
private boolean started;
protected DelayedForwardingClientCall(ClientCall<ReqT, RespT> delegate) {
this.delegate = delegate;
@carl-mastrangelo
carl-mastrangelo / Test.java
Last active May 12, 2019 08:27
Lossy SPSC Ring Buffer
package test;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.concurrent.atomic.AtomicLong;
import org.openjdk.jcstress.annotations.Actor;
import org.openjdk.jcstress.annotations.Expect;
import org.openjdk.jcstress.annotations.JCStressTest;
import org.openjdk.jcstress.annotations.Outcome;

C2:

# JMH version: 1.21
# VM version: JDK 11.0.2, Java HotSpot(TM) 64-Bit Server VM, 11.0.2+9-LTS
# VM invoker: /home/carl/bin/jdk-11.0.2/bin/java
# VM options: -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+LogCompilation -XX:LogFile=/tmp/blah.txt -XX:+PrintAssembly -XX:+PrintInterpreter -XX:+PrintNMethods -XX:+PrintNativeNMethods -XX:+PrintSignatureHandlers -XX:+PrintAdapterHandlers -XX:+PrintStubCode -XX:+PrintCompilation -XX:+PrintInlining -XX:+TraceClassLoading -XX:PrintAssemblyOptions=syntax -XX:PrintAssemblyOptions=intel
# Warmup: 10 iterations, 1 s each
# Measurement: 5 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# JMH version: 1.21
# VM version: JDK 13-ea, OpenJDK 64-Bit Server VM, 13-ea+22
# VM invoker: /home/carl/Downloads/jdk-13/bin/java
# VM options: -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:+LogCompilation -XX:LogFile=/tmp/blah.txt -XX:+PrintAssembly -XX:+PrintInterpreter -XX:+PrintNMethods -XX:+PrintNativeNMethods -XX:+PrintSignatureHandlers -XX:+PrintAdapterHandlers -XX:+PrintStubCode -XX:+PrintCompilation -XX:+PrintInlining -XX:+TraceClassLoading -XX:PrintAssemblyOptions=syntax -XX:PrintAssemblyOptions=intel
# Warmup: 10 iterations, 10 s each
# Measurement: 5 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Average time, time/op
Before
---------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------------------------------------------
BM_HpackEncoderInitDestroy 198 ns 198 ns 3535074
BM_HpackEncoderEncodeDeadline 129 ns 129 ns 5219422 framing_bytes/iter:9 header_bytes/iter:6
BM_HpackEncoderEncodeHeader<EmptyBatch>/0/16384 31 ns 31 ns 22189800 framing_bytes/iter:9 header_bytes/iter:0
BM_HpackEncoderEncodeHeader<EmptyBatch>/1/16384 31 ns 31 ns 22162902 framing_bytes/iter:9 header_bytes/iter:0
BM_HpackEncoderEncodeHeader