datafusion-contrib / datafusion-contrib/liquid-cache

[Epic] Accurate performance tracking

Open
#302 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
452
Forks
51
Avg merge
3h 10m
Merged PRs (30d)
12

Description

Current

Currently LiquidCache run benchmark on every PR, it looks like this:

Image

Future

While it is nice to have a rough idea of what's going on with the performance, the run-to-run variance has been quite large.

The variance comes from two sites:

  1. Upstream system variance. E.g., DataFusion has some quite high run-to-run variance that is mysterious to me. I sometimes observe quite large variances when running DataFusion on my local machine. This should not happen, and we need to investigate this a lot more.
  2. The testbed variance. We run benchmark on ubicloud-standard-4-ubuntu-2404 but it still has high variance, because it's not a dedicated runner.

While we could definitely directly address the above issues, it can take a while to make meaningful progress.

Instead, I'm thinking about tracking invariants that remain unchanged no matter what hardware we benchmark on:

  1. Number of allocations and deallocations, total size of allocations, number of small allocations, number of large allocations.
  2. Run benchmark with cachegrind, but this is super slow
  3. Check non-time-based internal metrics

cc @alamb who is also looking at performance tracking

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This is an epic and names no files or tests. Start by reviewing the existing benchmark-on-PR setup, then investigate the listed sources of variance and compare allocation metrics, cachegrind, and other non-time-based metrics. Done requires a decided, implementable approach for accurate performance tracking.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.