Sr Sw Eng @Datadoghq, optimize software running on JVM. Love performance topics and mechanical sympathy supporter. Java Champion & @javamissionctrl committer
After few days studying how go and other runtimes implements work-stealing the Loom custom scheduler - I've built a new one for @netty_project (but can be used with any transport you like as #aeron or #dpdk..) on locality-first principles, see https://t.co/KCbhK7a7Px (1/2)
🎉Shenandoah Late Barrier expansion is in! https://t.co/yGA9tOnISp
Comes with great throughput improvements. Unblocks Valhalla support. Opens up more advanced optimization and cleanup opportunities. @rkennke and @JohnTortugo are MVPs!
Here is a deep dive from Netflix about using #Java AOT caches (from Project #Leyden). Big kudos to Martin Chalupa and Ian Brown for putting the parts together, and explaining how it works at #JavaOne. https://t.co/xXd7m0XqFV
https://t.co/4vHDSD54AM
Clang compile speed, constexpr interpreter. Recursive types & type inference. User peephole opts, heroic opts, semantics. Infinite loop opts, Collatz Conjecture, UB. Research vs production compiler
MIT's Performance Engineering of Software Systems course is fantastic.
Topics include perf analysis, algorithmic techniques for high perf, instruction-level & caching optimizations, parallel programming, and more.
https://t.co/l3UszCiGw2
After a year of daily AI-assisted coding, I wrote down what actually works - spec-driven dev, skills as guardrails, incremental verification.
https://t.co/s0fUxd5bLr
AI is an amplifier. It magnifies discipline and chaos with equal enthusiasm.
#AI#SoftwareEngineering
JEP 523 ("Make G1 the Default Garbage Collector in All Environments") updated: Status changed from "Proposed to target for version 27" to "Targeted for version 27". See https://t.co/s7lz75PgP5
JEP 534 ("Compact Object Headers by Default") updated: Status changed from "Proposed to target for version 27" to "Targeted for version 27". See https://t.co/bubhuqMuwB
https://t.co/o3f8m2E3M1
AST, Sea of Nodes, V8, C2, SSA-CFG. Ruby IR, opts in parser, inlining, value profiling, Ruby JIT in Rust. CFG & mem aliasing. V8 vs Maglev vs SofN, More & more inlining, LTO, LLVM. SofN - philosophy. Type lattice in pictures, deep dive type impl
Before jumping into books like DDIA or Database Internals, it helps to understand the systems layer these designs are built on.
A lot of the design of such data-intensive systems is based on virtual memory: page tables, page faults, mmap, the page cache, swapping, NUMA placement, TLBs, and the tradeoffs between what the OS wants and what the database wants.
My latest article is a ~25,000-word mini-book on virtual memory.
It starts from first principles and goes all the way down to advanced topics like NUMA placement and performance debugging with tools like perf and /proc.
I also wrote it differently: as a dialogue between a user-space process and the kernel.
Most treatments of virtual memory are dry and fact-heavy. I wanted this one to feel more like a story, while still being technically deep.
Link below.
@nevgeniev@Jepupdates Comparing G1 to ZGC/Shenandoah is unfaithful IMHO. The trade offs are completely different. Low latency GCs like ZGC/Shenandoah target to have a minimal sub millis pauses, while G1 is more about throuput targeting max 200ms pause.
I mean, look at this: there is hardly a sub-workload where scores do not improve. The improvements like these are as rare as unicorns. It is likely to be once in a lifetime thing.