Skip to content

Latest commit

 

History

52 Commits

Folders and files

Repository files navigation

PVRLabs experiments

A collection of experiments from PVRLabs.

Original code, scripts, documentation, and experiment artifacts in this repository are licensed under the MIT License, unless otherwise noted. Third-party material retains its original license. Articles and other content linked outside this repository are not covered by this license.

Have an experiment idea or a question? Join the discussions →

Who these experiments are for

Many of our experiments focus on developers building small, self-hosted applications on affordable servers. Think independent developers, solopreneurs, and small teams who want practical software without maintaining complex infrastructure.

For Java applications, we're particularly interested in:

  • 256–512 MiB VPS deployments, sometimes extending to 1 GiB.
  • Conventional JVM applications using familiar development and diagnostic tools.
  • Useful applications with persistence, monitoring, and enough memory headroom for the operating system.
  • Maintainable architectures that can grow, including moving a database or other components to separate infrastructure later.

We're not trying to achieve the smallest possible Java process. GraalVM Native Image can offer substantial startup and memory benefits, but it introduces different build, compatibility, and operational tradeoffs. For now, we're more interested in what ordinary HotSpot deployments can accomplish on modest hardware.

Similarly, Kubernetes optimization, container density, and extreme memory minimization aren't our primary focus.

This describes our interests, not strict requirements. The repository also contains experiments outside this area, and we'll continue exploring other technologies when the questions are interesting.

Technical criticism and questions are welcome. See my discussion policy for how I participate in conversations about this work.

Optimization approach

We favor simple, reproducible configurations that developers can readily adopt: mainstream frameworks and libraries, recommended defaults, and straightforward, documented optimizations. Ordinary configuration needed to fit the deployment environment is part of that approach.

We keep tuning effort comparable across implementations and avoid fine-grained, workload-specific tuning solely to improve benchmark results. The goal is to inform practical technology and configuration choices, rather than establish each technology's performance ceiling. When specialized tuning could materially change a conclusion, we acknowledge that limitation.

Experiments

Releases

Packages

Contributors

Languages