Skip to content

Instantly share code, notes, and snippets.

@pettyjamesm
pettyjamesm / New FlatGroupByHash Memory Usage.md
Created March 7, 2025 15:49
New FlatGroupByHash Memory Usage

Initial observations about FlatGroupByHash memory usage compared to the previous MultiChannelGroupByHash that was removed in Trino 427 are documented in this gist. Those observations prompted a deeper investigation and discussion how FlatHash and the flat layout scheme should work and was carried forward into a reimplementation in trino#25127.

Summary of Changes

  1. Reduce the flat memory layout width for variable width types from 16 to 4 bytes per entry
  2. Reduce the expansion factor of VariableWidthData from 2x to 1.5x
[
{
"jmhVersion" : "1.37",
"benchmark" : "io.trino.operator.BenchmarkGroupByHash.addPages",
"mode" : "avgt",
"threads" : 1,
"forks" : 1,
"jvm" : "/Users/user/.sdkman/candidates/java/23.0.1-tem/bin/java",
"jvmArgs" : [
"-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=52578:/Applications/IntelliJ IDEA.app/Contents/bin",
[
{
"jmhVersion" : "1.37",
"benchmark" : "io.trino.operator.BenchmarkTopNOperator.topN",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/Users/pettja/.sdkman/candidates/java/23.0.1-tem/bin/java",
"jvmArgs" : [
"-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=54654:/Applications/IntelliJ IDEA.app/Contents/bin",
@pettyjamesm
pettyjamesm / baseline_hash_300.json
Last active October 7, 2023 12:58
Vectorized Hashing for FlatHash @ 300 Groups
[
{
"jmhVersion" : "1.37",
"benchmark" : "io.trino.operator.BenchmarkGroupByHash.addPages",
"mode" : "avgt",
"threads" : 1,
"forks" : 1,
"jvm" : "/local/home/pettja/.sdkman/candidates/java/17.0.8-amzn/bin/java",
"jvmArgs" : [
"-Xms10g",
@pettyjamesm
pettyjamesm / baseline_hash_3M.json
Last active October 7, 2023 12:57
Vectorized Hashing for FlatHash @ 3M Groups
[
{
"jmhVersion" : "1.37",
"benchmark" : "io.trino.operator.BenchmarkGroupByHash.addPages",
"mode" : "avgt",
"threads" : 1,
"forks" : 1,
"jvm" : "/local/home/pettja/.sdkman/candidates/java/17.0.8-amzn/bin/java",
"jvmArgs" : [
"-Xms10g",
@pettyjamesm
pettyjamesm / baseline-topnbuilder.json
Last active March 30, 2023 22:00
GroupedTopNBuilder
[
{
"jmhVersion" : "1.36",
"benchmark" : "io.trino.operator.BenchmarkGroupedTopNRowNumberBuilder.processTopNInput",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/local/home/pettja/.sdkman/candidates/java/17.0.6-amzn/bin/java",
"jvmArgs" : [
"-Xms4g",
@pettyjamesm
pettyjamesm / baseline-full.json
Last active November 30, 2022 22:18
Time String Casts Benchmarks
[
{
"jmhVersion" : "1.35",
"benchmark" : "io.trino.operator.scalar.timestamp.BenchmarkCastTimestampToVarchar.benchmarkCastToVarchar",
"mode" : "thrpt",
"threads" : 1,
"forks" : 1,
"jvm" : "/Users/pettja/.sdkman/candidates/java/17.0.5-amzn/bin/java",
"jvmArgs" : [
"-Djdk.attach.allowAttachSelf",
@pettyjamesm
pettyjamesm / baseline_block_size.json
Created February 24, 2022 19:20
presto#17349 benchmarks
This file has been truncated, but you can view the full file.
[
{
"jmhVersion" : "1.20",
"benchmark" : "com.facebook.presto.block.BenchmarkBlocks.benchmarkGetPositionsSizeInBytes",
"mode" : "avgt",
"threads" : 1,
"forks" : 1,
"jvm" : "/local/home/pettja/.sdkman/candidates/java/8.312.07.1-amzn/jre/bin/java",
"jvmArgs" : [
@pettyjamesm
pettyjamesm / baseline_blocks.json
Last active November 2, 2021 14:29
Presto Array and Row Blocks
[
{
"jmhVersion" : "1.20",
"benchmark" : "com.facebook.presto.block.BenchmarkBlocks.benchmarkCopyPositions",
"mode" : "avgt",
"threads" : 1,
"forks" : 1,
"jvm" : "/local/home/pettja/.sdkman/candidates/java/8.0.265-amzn/jre/bin/java",
"jvmArgs" : [
"-Xms8g",
@pettyjamesm
pettyjamesm / trino_baseline.json
Created October 20, 2021 14:41
Trino SortedPositionLinks
[
{
"jmhVersion" : "1.20",
"benchmark" : "io.trino.benchmark.BenchmarkInequalityJoin.benchmarkJoin",
"mode" : "avgt",
"threads" : 1,
"forks" : 1,
"jvm" : "/local/home/pettja/.sdkman/candidates/java/11.0.12-zulu/bin/java",
"jvmArgs" : [
"-Xms8g",