Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. JVM
  3. grav

grav

Apache-2.0Python

A collection of performance visualization tools for analyzing process execution, scheduler behavior, CPU tenancy, and JVM heap allocations.

GitHubGitHub
293 stars22 forks0 contributors

What is grav?

Grav is a collection of performance visualization tools for Linux systems that helps analyze process execution, CPU scheduling, and JVM memory allocation. It generates visual reports like scheduler profiles, CPU tenancy charts, and flame graphs to identify performance bottlenecks and optimization opportunities. The tools integrate with existing Linux performance monitoring infrastructure like perf and BCC.

Target Audience

Performance engineers, DevOps professionals, and Java developers working on Linux systems who need to diagnose low-level performance issues, scheduler behavior, or JVM memory allocation patterns.

Value Proposition

Grav provides ready-to-use scripts that simplify the generation of advanced performance visualizations without requiring deep expertise in Linux profiling tools. Its focus on visualization makes complex performance data more accessible and actionable compared to raw metric collection.

Overview

Performance visualisation tools

Use Cases

Best For

  • Identifying kernel scheduler pre-emption issues in multi-threaded applications
  • Analyzing CPU affinity and tenancy for performance optimization
  • Visualizing JVM heap allocation patterns and hotspots
  • Creating annotated flame graphs with thread names for Java applications
  • Generating animated flame graphs to show performance changes over time
  • Setting up a reproducible performance analysis environment with Vagrant

Not Ideal For

  • Windows or macOS developers needing cross-platform performance analysis tools
  • Projects using non-JVM languages without Java integration requirements
  • Environments where installing kernel-level tools like BCC is restricted due to security policies

Pros & Cons

Pros

Intuitive Visualizations

Generates SVG charts like flame graphs and scheduler profiles that transform raw performance data into easily interpretable visuals, helping identify bottlenecks quickly.

JVM-Specific Tools

Includes specialized features such as heap allocation flamegraphs and thread-annotated flamegraphs, leveraging DTrace probes for deep Java application analysis.

Reproducible Setup

Offers a Vagrant box that pre-installs all dependencies like perf and BCC, ensuring a consistent environment for performance testing on non-Linux machines.

Leverages Standard Infrastructure

Builds on established Linux tools like perf and iovisor BCC, avoiding redundancy and ensuring compatibility with existing performance monitoring ecosystems.

Cons

Complex Dependency Management

Requires manual cloning and configuration of multiple external repositories (e.g., perf-map-agent, flamegraph), which can be tedious and error-prone for new users.

Platform and Language Limitations

Tied to Linux systems and primarily focused on Java, with no built-in support for other operating systems or programming languages, reducing versatility.

Static Analysis Output

Produces static SVG files without interactive features or real-time monitoring, limiting dynamic performance investigation compared to live dashboards.

Frequently Asked Questions

Quick Stats

Stars293
Forks22
Contributors0
Open Issues4
Last commit7 years ago
CreatedSince 2017

Tags

#jvm-profiling#observability#system-performance#monitoring#performance-visualization#flamegraph#ebpf#performance

Built With

B
Bash
D
DTrace
u
ubuntu
V
Vagrant

Included in

JVM2.2k
Auto-fetched 18 hours ago

Related Projects

leakcanaryleakcanary

A memory leak detection library for Android.

Stars29,958
Forks3,987
Last commit3 days ago
ZipkinZipkin

Zipkin is a distributed tracing system

Stars17,447
Forks3,102
Last commit3 months ago
async-profilerasync-profiler

Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events

Stars9,093
Forks976
Last commit21 hours ago
BTraceBTrace

Production-safe dynamic tracing and diagnostics for Java applications—attach to live JVMs with no restart or recompilation.

Stars5,986
Forks958
Last commit1 day ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub