Skip to content

Include configuration setup for Presto benchmark runsΒ #32

Closed

Description

@GregoryKimball

Here are some notes on required configuration details

# hive.properties
hive.file-splittable=false
# This is needed for correctness as we cannot split a single parquet file

# coordinator config
single-node-execution-enabled=true
# This just happens to be the mode we're focusing on while IBM focuses on distributed

# worker config
task.max-drivers-per-task=4
# We've seen in the past that this increases overlap between IO and compute for GPU. I believe this value should be higher for effective utilisation of CPU in case of cpu-only native runs

@devavret is there more to add here?

Activity

  1. karthikeyann commented on Sep 3, 2025

    @karthikeyann
    Contributor

    I have these changes related to Presto setup.

    diff --git a/presto/docker/config/etc_common/jvm.config b/presto/docker/config/etc_common/jvm.config
    index e33ab84..8a1aba4 100644
    --- a/presto/docker/config/etc_common/jvm.config
    +++ b/presto/docker/config/etc_common/jvm.config
    @@ -7,3 +7,20 @@
     -XX:+HeapDumpOnOutOfMemoryError
     -XX:+ExitOnOutOfMemoryError
     -Djdk.attach.allowAttachSelf=true
    +--add-opens=java.base/java.io=ALL-UNNAMED
    +--add-opens=java.base/java.lang=ALL-UNNAMED
    +--add-opens=java.base/java.lang.ref=ALL-UNNAMED
    +--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
    +--add-opens=java.base/java.net=ALL-UNNAMED
    +--add-opens=java.base/java.nio=ALL-UNNAMED
    +--add-opens=java.base/java.security=ALL-UNNAMED
    +--add-opens=java.base/javax.security.auth=ALL-UNNAMED
    +--add-opens=java.base/javax.security.auth.login=ALL-UNNAMED
    +--add-opens=java.base/java.text=ALL-UNNAMED
    +--add-opens=java.base/java.util=ALL-UNNAMED
    +--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
    +--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
    +--add-opens=java.base/java.util.regex=ALL-UNNAMED
    +--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
    +--add-opens=java.base/sun.security.action=ALL-UNNAMED
    +--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED
    diff --git a/presto/docker/config/etc_coordinator/config_native.properties b/presto/docker/config/etc_coordinator/config_native.properties
    index 21db547..a09f4d9 100644
    --- a/presto/docker/config/etc_coordinator/config_native.properties
    +++ b/presto/docker/config/etc_coordinator/config_native.properties
    @@ -8,9 +8,9 @@ discovery.uri=http://presto-coordinator:8080
     presto.version=testversion
     
     # Query execution settings
    -query.max-memory=2GB
    -query.max-memory-per-node=1GB
    -query.max-total-memory-per-node=1GB
    +query.max-memory=20GB
    +query.max-memory-per-node=10GB
    +query.max-total-memory-per-node=10GB
     
     # Set required workers to 1 (minimum allowed) and reduce wait time
     query-manager.required-workers=1
  2. karthikeyann commented on Sep 3, 2025

    @karthikeyann
    Contributor

    Exact memory numbers may vary. We should test in different GPUs and arrive at numbers that works best in all machines.

  3. devavret commented on Sep 4, 2025

    @devavret
    Contributor

    @devavret is there more to add here?

    These are all the ones that affect GPU execution for now

  4. patdevinwilson commented on Sep 17, 2025

    @patdevinwilson
    Contributor

    Here are my configs for successful runs on GPU and CPU Gh200

    Notably- "cudf.exchange.enabled": true,

    tpch_sf100_cpu_optimized.json
    tpch_sf100_gpu.json
    tpch_sf1000_cpu.json
    tpch_sf1000_gpu.json

    The actual CUDF parquet reader is controlled via Velox command-line flags, not .properties files:

    From /data/nvidia-work/presto/presto-native-execution/zrl_bin/run_worker.sh

    VELOX_ARGS="-velox_cudf_debug=true -velox_cudf_table_scan=true -velox_cudf_enabled=true -velox_cudf_exchange=true -velox_cudf_memory_resource=pool -v=3"

    Presto server is launched with these flags:

    presto_server -etc_dir $WORKER_CONFIG_DIR $VELOX_ARGS

  5. GregoryKimball commented on Sep 25, 2025

    @GregoryKimball
    Author

    Here is an updated configuration set based on PBench auto-generation

    coordinator=true
    discovery-server.enabled=true
    discovery.uri=http://coordinator:8080
    http-server.http.port=8080
    node-scheduler.include-coordinator=false
    presto.version=${PRESTO_BUILD_VERSION}
    
    http-server.log.max-size=67108864B
    http-server.log.max-history=2
    http-server.threads.max=1000
    
    http-server.authentication.type=PASSWORD
    http-server.authentication.allow-forwarded-https=true
    
    log.max-history=30
    log.max-size=104857600B
    memory.heap-headroom-per-node=22GB
    
    node-scheduler.max-pending-splits-per-task=2000
    node-scheduler.max-splits-per-node=2000
    
    # Optimizer flags
    optimizer.joins-not-null-inference-strategy=USE_FUNCTION_METADATA
    optimizer.default-filter-factor-enabled=true
    optimizer.exploit-constraints=true
    optimizer.in-predicates-as-inner-joins-enabled=true
    optimizer.partial-aggregation-strategy=automatic
    optimizer.prefer-partial-aggregation=true
    optimizer.default-join-selectivity-coefficient=0.1
    optimizer.infer-inequality-predicates=true
    optimizer.handle-complex-equi-joins=true
    optimizer.generate-domain-filters=true
    # https://github.com/prestodb/presto/issues/22161#issuecomment-1994128619
    join-max-broadcast-table-size=1250MB
    
    query.client.timeout=30m
    query.execution-policy=phased
    query.low-memory-killer.policy=total-reservation-on-blocked-nodes
    query.max-execution-time=30m
    query.max-history=1000
    query.max-total-memory-per-node=87GB
    query.max-total-memory=696GB
    query.max-memory-per-node=78GB
    query.max-memory=624GB
    # query.max-stage-count Needed for Nielsen Q5
    query.max-stage-count=1300
    query.min-expire-age=120.00m
    query.min-schedule-split-batch-size=2000
    query.stage-count-warning-threshold=150
    # query.max-length Needed for Nielsen Q5 and Q9
    query.max-length=2000000
    
    scale-writers=true
    scheduler.http-client.max-requests-queued-per-destination=4096
    shutdown.grace-period=30s
    sink.max-buffer-size=1GB
    
    experimental.enable-dynamic-filtering=false
    experimental.max-revocable-memory-per-node=50GB
    experimental.max-spill-per-node=50GB
    experimental.optimized-repartitioning=true
    experimental.pushdown-dereference-enabled=true
    experimental.pushdown-subfields-enabled=true
    experimental.query-max-spill-per-node=50GB
    experimental.reserved-pool-enabled=false
    experimental.spiller-max-used-space-threshold=0.7
    experimental.spiller-spill-path=/home/centos/
    
    jmx.rmiregistry.port=10100
    jmx.rmiserver.port=10101
    
    # Configs only for the coordinator of a Prestissmo cluster
    # Without this, you might see errors like "Scalar function name not registered: presto.default.$operator$hash_code, called with arguments: (BIGINT)."
    optimizer.optimize-hash-generation=false
    # Without this, decimal columns are treated as complex type while it should be scalar type. You will see errors like "scalar type has no children"
    # Another error we may observe is "Chunked http transferring encoding is not supported." https://github.ibm.com/lakehouse/velox/issues/74
    use-alternative-function-signatures=true
    inline-sql-functions=false
    offset-clause-enabled=true
    # We set this to true when comparing with DB2 https://github.ibm.com/lakehouse/velox/issues/10
    # parse-decimal-literals-as-double=true
    regex-library=RE2J
    # For VeloxRuntimeError: NULL_IF not supported in specialForm https://github.ibm.com/lakehouse/velox/issues/59
    native-execution-enabled=true
    # Enable sidecar by default
    coordinator-sidecar-enabled=true
    presto.default-namespace=native.default
    plugin.dir=/opt/presto-server/native-plugin/
    
  6. misiugodfrey commented on Oct 23, 2025

    @misiugodfrey
    Contributor

    This should now all be handled via pbench in the generate_presto_config.sh script.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions