86 lines
2.8 KiB
Markdown
86 lines
2.8 KiB
Markdown
# Presto Benchto benchmarks
|
|
|
|
The Benchto benchmarks utilize Benchto benchmarking utility to do macro benchmarking of Presto. As opposed to micro benchmarking which exercises
|
|
a class or a small, coherent set of classes, macro benchmarks done with Benchto use Presto
|
|
end-to-end, by accessing it through its API (usually with `presto-jdbc`), executing queries,
|
|
measuring time and gathering various metrics.
|
|
|
|
## Benchmarking suites
|
|
|
|
Even though benchmarks exercise Presto end-to-end, a single benchmark cannot use all Presto
|
|
features. Therefore benchmarks are organized in suites, like:
|
|
|
|
* *tpch* - queries closely following the [TPC-H](http://www.tpc.org/tpch/) benchmark
|
|
* *tpcds* - queries closely following the [TPC-DS](http://www.tpc.org/tpcds/) benchmark
|
|
|
|
## Usage
|
|
|
|
### Requirements
|
|
|
|
* Presto already installed on the target environment
|
|
* Basic understanding of Benchto components and architecture
|
|
* Benchto service configured and running
|
|
* An environment defined in Benchto service
|
|
|
|
### Configuring benchmarks
|
|
|
|
Benchto driver needs to know two things: what benchmark is to be run and what environment
|
|
it is to be run on. For the purpose of the following example, we will use `tpch` benchmark
|
|
and Presto server running at `localhost:8080`, with Benchto service running at `localhost:8081`.
|
|
|
|
Benchto driver uses Sprint Boot to locate environment configuration file, so to pass the
|
|
configuration. To continue with our example, one needs to place an `application-presto-devenv.yaml`
|
|
file in the current directory (i.e. the directory from which the benchmark will be invoked),
|
|
with the following content:
|
|
|
|
```yaml
|
|
benchmark-service:
|
|
url: http://localhost:8081
|
|
|
|
data-sources:
|
|
presto:
|
|
url: jdbc:presto://localhost:8080
|
|
username: na
|
|
password: na
|
|
driver-class-name: io.prestosql.jdbc.HetuDriver
|
|
|
|
environment:
|
|
name: PRESTO-DEVENV
|
|
|
|
presto:
|
|
url: http://localhost:8080
|
|
|
|
benchmark:
|
|
feature:
|
|
presto:
|
|
metrics.collection.enabled: true
|
|
|
|
macros:
|
|
sleep-4s:
|
|
command: echo "Sleeping for 4s" && sleep 4
|
|
|
|
```
|
|
|
|
### Configuring overrides file
|
|
|
|
It is possible to override benchmark variables with benchto-driver overrides feature.
|
|
This is useful for instance when one wants to use different number of benchmark
|
|
runs or different underlying schemas. Create a simple `overrides.yaml` file:
|
|
|
|
```yaml
|
|
runs: 10
|
|
tpch_medium: tpcds_10gb_txt
|
|
```
|
|
|
|
### Running benchto-driver
|
|
|
|
With the scene set up as in the previous section, the benchmark can be run with:
|
|
```bash
|
|
./mvnw clean package -pl presto-benchto-benchmarks
|
|
java -Xmx1g -jar presto-benchto-benchmarks/target/hetu-benchto-benchmarks-*-executable.jar \
|
|
--sql presto-benchto-benchmarks/src/main/resources/sql \
|
|
--benchmarks presto-benchto-benchmarks/src/main/resources/benchmarks \
|
|
--activeBenchmarks=presto/tpch --profile=presto-devenv \
|
|
--overrides overrides.yaml
|
|
```
|