From 7d8a0ee4032af39141eacda860e7dc64d74dc9d7 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Wed, 4 Mar 2020 13:33:58 -0600 Subject: [PATCH] import dsbench docs --- engine-docs/pom.xml | 2 +- .../dev-guide/_index.md | 0 .../dev-guide/activity_internals.md | 0 .../dev-guide/annotated_diag.md | 0 .../dev-guide/async_operations.md | 0 .../dev-guide/building_activities.md | 0 .../dev-guide/contributing.md | 0 .../dev-guide/design_guidelines.md | 0 .../dev-guide/error_mapping.md | 0 .../dev-guide/project_structure.md | 0 .../dev-guide/scripting_extensions.md | 0 .../dev-guide/standard_yaml_dev.md | 0 .../nb-cli-docs/activity_inputs.md | 0 .../nb-cli-docs/cycle_log.md | 0 .../nb-cli-docs/docker.md | 0 .../nb-cli-docs/optimo.md | 0 .../nb-cli-docs/threads.md | 0 .../nb-cli-docs/topics.md | 0 .../01_dsbench/02_compatibility.md | 25 ++ .../01_dsbench/03_release_notes.md | 18 + .../01_dsbench/04_support_options.md | 26 ++ .../01_dsbench/05_troubleshooting.md | 24 + .../resources/docs-for-nb/01_dsbench/index.md | 16 + .../02_getting_started/01_installing.md | 29 ++ .../02_getting_started/02_running.md | 151 +++++++ .../02_getting_started/03_getting_results.md | 44 ++ .../02_getting_started/04_reading_metrics.md | 63 +++ .../02_getting_started/05_next_steps.md | 35 ++ .../docs-for-nb/02_getting_started/index.md | 9 + .../docs-for-nb/03_basics/01_command_line.md | 174 ++++++++ .../03_basics/02_grafana_metrics.md | 18 + .../03_basics/03_parameter_types.md | 54 +++ .../03_basics/05_core_activity_params.md | 202 +++++++++ .../03_basics/06_core_stmt_params.md | 67 +++ .../resources/docs-for-nb/03_basics/index.md | 8 + .../docs-for-nb/04_builtins/cql-iot.md | 111 +++++ .../docs-for-nb/04_builtins/cql-keyvalue.md | 100 +++++ .../docs-for-nb/04_builtins/cql-widerows.md | 106 +++++ .../docs-for-nb/04_builtins/index.md | 27 ++ .../docs-for-nb/04_designing/00_yaml_org.md | 45 ++ .../04_designing/01_statement_templates.md | 50 +++ .../04_designing/02_data_bindings.md | 94 ++++ .../04_designing/03_stmt_params.md | 22 + .../docs-for-nb/04_designing/04_stmt_tags.md | 80 ++++ .../04_designing/05_stmt_blocks.md | 42 ++ .../04_designing/06_more_statements.md | 117 +++++ .../docs-for-nb/04_designing/07_multi_docs.md | 49 +++ .../04_designing/08_template_params.md | 33 ++ .../04_designing/09_stmt_naming.md | 32 ++ .../04_designing/10_yaml_diagnostics.md | 82 ++++ .../docs-for-nb/04_designing/index.md | 31 ++ .../04_designing/statement_params.md | 28 ++ .../docs-for-nb/05_activitytypes/06_cql_at.md | 413 ++++++++++++++++++ .../05_activitytypes/06_stdout_at.md | 98 +++++ .../docs-for-nb/05_activitytypes/index.md | 10 + .../09_reference/02_cli_scripting.md | 84 ++++ .../09_reference/03_scenario_scripting.md | 98 +++++ .../09_reference/04_standard_metrics.md | 27 ++ .../09_reference/05_timing_terms.md | 29 ++ .../09_reference/06_advanced_metrics.md | 101 +++++ .../docs-for-nb/09_reference/index.md | 6 + virtdata-userlibs/pom.xml | 2 +- 62 files changed, 2880 insertions(+), 2 deletions(-) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/_index.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/activity_internals.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/annotated_diag.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/async_operations.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/building_activities.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/contributing.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/design_guidelines.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/error_mapping.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/project_structure.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/scripting_extensions.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/dev-guide/standard_yaml_dev.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/nb-cli-docs/activity_inputs.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/nb-cli-docs/cycle_log.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/nb-cli-docs/docker.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/nb-cli-docs/optimo.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/nb-cli-docs/threads.md (100%) rename engine-docs/src/main/resources/{docs-for-nb => docs-for-ebhistoric}/nb-cli-docs/topics.md (100%) create mode 100644 engine-docs/src/main/resources/docs-for-nb/01_dsbench/02_compatibility.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/01_dsbench/03_release_notes.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/01_dsbench/04_support_options.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/01_dsbench/05_troubleshooting.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/01_dsbench/index.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/02_getting_started/01_installing.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/02_getting_started/02_running.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/02_getting_started/03_getting_results.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/02_getting_started/04_reading_metrics.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/02_getting_started/05_next_steps.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/02_getting_started/index.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/03_basics/01_command_line.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/03_basics/02_grafana_metrics.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/03_basics/03_parameter_types.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/03_basics/05_core_activity_params.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/03_basics/06_core_stmt_params.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/03_basics/index.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_builtins/cql-iot.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_builtins/cql-keyvalue.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_builtins/cql-widerows.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_builtins/index.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/00_yaml_org.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/01_statement_templates.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/02_data_bindings.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/03_stmt_params.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/04_stmt_tags.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/05_stmt_blocks.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/06_more_statements.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/07_multi_docs.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/08_template_params.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/09_stmt_naming.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/10_yaml_diagnostics.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/index.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/04_designing/statement_params.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/05_activitytypes/06_cql_at.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/05_activitytypes/06_stdout_at.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/05_activitytypes/index.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/09_reference/02_cli_scripting.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/09_reference/03_scenario_scripting.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/09_reference/04_standard_metrics.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/09_reference/05_timing_terms.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/09_reference/06_advanced_metrics.md create mode 100644 engine-docs/src/main/resources/docs-for-nb/09_reference/index.md diff --git a/engine-docs/pom.xml b/engine-docs/pom.xml index f93422589..7bb773a13 100644 --- a/engine-docs/pom.xml +++ b/engine-docs/pom.xml @@ -28,7 +28,7 @@ io.nosqlbench - virtdata-docsys + docsys 3.12.3-SNAPSHOT compile diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/_index.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/_index.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/_index.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/_index.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/activity_internals.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/activity_internals.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/activity_internals.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/activity_internals.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/annotated_diag.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/annotated_diag.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/annotated_diag.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/annotated_diag.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/async_operations.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/async_operations.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/async_operations.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/async_operations.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/building_activities.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/building_activities.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/building_activities.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/building_activities.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/contributing.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/contributing.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/contributing.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/contributing.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/design_guidelines.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/design_guidelines.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/design_guidelines.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/design_guidelines.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/error_mapping.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/error_mapping.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/error_mapping.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/error_mapping.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/project_structure.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/project_structure.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/project_structure.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/project_structure.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/scripting_extensions.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/scripting_extensions.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/scripting_extensions.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/scripting_extensions.md diff --git a/engine-docs/src/main/resources/docs-for-nb/dev-guide/standard_yaml_dev.md b/engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/standard_yaml_dev.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/dev-guide/standard_yaml_dev.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/dev-guide/standard_yaml_dev.md diff --git a/engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/activity_inputs.md b/engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/activity_inputs.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/activity_inputs.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/activity_inputs.md diff --git a/engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/cycle_log.md b/engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/cycle_log.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/cycle_log.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/cycle_log.md diff --git a/engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/docker.md b/engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/docker.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/docker.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/docker.md diff --git a/engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/optimo.md b/engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/optimo.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/optimo.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/optimo.md diff --git a/engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/threads.md b/engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/threads.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/threads.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/threads.md diff --git a/engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/topics.md b/engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/topics.md similarity index 100% rename from engine-docs/src/main/resources/docs-for-nb/nb-cli-docs/topics.md rename to engine-docs/src/main/resources/docs-for-ebhistoric/nb-cli-docs/topics.md diff --git a/engine-docs/src/main/resources/docs-for-nb/01_dsbench/02_compatibility.md b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/02_compatibility.md new file mode 100644 index 000000000..b0cef3496 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/02_compatibility.md @@ -0,0 +1,25 @@ +--- +title: Compatibility +weight: 3 +--- + +# Binary Format + +DSBench is distributed primarily as a binary for Linux distributions. The DSBench binary includes its own OpenJDK runtime. It should work for most modern Linux distributions. The only requirement is that fuse be installed (it is usually already present) on the client system. + +# Supported Systems + +DSBench runs on Linux as a binary distribution. Any modern Linux which can run AppImage binaries should work. + +# Activity Types + +In dsbench terms, this means: + +Activity types are how DSBench gets its support for different protocols or client drivers. The initial release of DSBench includes support for +these activity types: + +- The CQL activity type + - The initial release of the CQL activity type uses the DataStax driver version 1.9.0 +- The stdout activity type. + + diff --git a/engine-docs/src/main/resources/docs-for-nb/01_dsbench/03_release_notes.md b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/03_release_notes.md new file mode 100644 index 000000000..195c4927e --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/03_release_notes.md @@ -0,0 +1,18 @@ +--- +title: Release Notes +weight: 5 +--- + +# Release Notes + +The enhancements, fixes, and usage notes that go with each release +will be summarized here. + +## Initial Release + +- Release Date: 01/29/2020 +- System Requirements: + - Any recent Linux system with FUSE support +- Supported Activity Types: + - cql + - stdout diff --git a/engine-docs/src/main/resources/docs-for-nb/01_dsbench/04_support_options.md b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/04_support_options.md new file mode 100644 index 000000000..e2acc7706 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/04_support_options.md @@ -0,0 +1,26 @@ +--- +title: Support Options +weight: 10 +--- + +# Support Options + +These guidelines are mirrored at the [Submitting Feedback](https://github.com/datastax/dsbench-labs/wiki/Submitting-Feedback) wiki page at the dsbench project site, which is also where the `[Submit Feedback]` link will take you. + +## Community Support + +It is supported by a community of active users at [DataStax DSBench Community](https://community.datastax.com/spaces/51/index.html). + +## Bug Fixes + +If you think you have found a bug, please [file a bug report](https://github.com/datastax/dsbench-labs/issues/new?labels=bug). DSBench is actively used within DataStax, and verified bugs will get attention as resources permit. Bugs reports which are more detailed, or bug reports which include steps to reproduce will get attention first. + +## Feature Requests + +If you would like to see something in DSBench that is not there yet, +please [submit a feature request](https://github.com/datastax/dsbench-labs/issues/new?labels=feature). + +## Documentation Requests + +If you would like to see a specific dsbench or testing topic added to the guidebook, please [request docs content](https://github.com/datastax/dsbench-labs/issues/new?labels=docrequest). + diff --git a/engine-docs/src/main/resources/docs-for-nb/01_dsbench/05_troubleshooting.md b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/05_troubleshooting.md new file mode 100644 index 000000000..52a326503 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/05_troubleshooting.md @@ -0,0 +1,24 @@ +--- +title: Troubleshooting +weight: 05 +--- + +# Troubleshooting + +This section will contain some troubleshooting guidance for +common issue as we uncover them. + +## Errors while starting dsbench binary + +If you get an error while trying to run the Linux DSBench binary, ensure that you have the system module installed for fuse. This module is used by the AppImage runtime that allows for a bundled binary. + +## Errors when running java -jar + +### Verify java binary path + +You will need to make sure that the java binary is the correct one that is being run. Either call it with the full path `/usr/local/...` or use `which java` to see which java executable is used when you just run `java ...`. + +### Verify java version + +Each version of dsbench requires a particular major version of Java. For example, dsbench version 2.12.26 requires at least Java 12. +You can quickly check which version of java you have on your path with `java -version` \ No newline at end of file diff --git a/engine-docs/src/main/resources/docs-for-nb/01_dsbench/index.md b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/index.md new file mode 100644 index 000000000..5ff6d1152 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/01_dsbench/index.md @@ -0,0 +1,16 @@ +--- +title: Introducing DSBench +weight: 10 +--- + +# DataStax Bench Documentation + +Welcome to the documentation for DataStax Bench (DSBench). DSBench is a power tool that emulates real application workloads. This means that you can fast-track performance, sizing and data model testing without writing your own testing harness. + +DSBench endeavors to be valuable to all users. We do this by making it easy for you, our user, to do just what you need without worrying about the rest. If you need to do something simple, it should be simple to find the right settings and just do it. If you need something more sophisticated, then you should be able to find what you need with a reasonable amount of effort and no surprises. + +Doing this well requires a coordinated effort in how the tools are documented and layered. We're just getting started with the bundled +docs that you are reading now. Look for new and expanded content in this guidebook with each release. We will be adding docs for more advanced users to unlock based on a how-to format. + +We take requests! If you have specific dsbench topics you'd like to +have added to this guidebook, please make a request as described under the Support Options section. diff --git a/engine-docs/src/main/resources/docs-for-nb/02_getting_started/01_installing.md b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/01_installing.md new file mode 100644 index 000000000..3094ce20b --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/01_installing.md @@ -0,0 +1,29 @@ +--- +title: 01 Installing +weight: 1 +--- + +# 1. Installing DSBench + +If you are viewing this via the guidebook, you've already completed this step and you can move on to the next section. + +If you are viewing this documentation as exported from the guidebook, then you need to get the binary or jar for your system. + +The binary is recommended, since it contains its own built-in JVM. If you are running Linux, get the dsbench binary for Linux. + +If you are running another system with a supported JVM, then you can do the following: + +1. Download dsbench.jar +2. Download and install the JVM corresponding to the dsbench version. (The second number of the dsbench version indicates the JVM version). For example, dsbench version 2.13.4 would require JVM 13. +3. Execute dsbench as `java -jar dsbench.jar ...`. You can replace the elipses `...` with any valid dsbench command line. + +If you have any trouble, check the troubleshooting section. + + +## Sanity Check + +To ensure that dsbench runs on your system, simply run it as + + dsbench --version + + diff --git a/engine-docs/src/main/resources/docs-for-nb/02_getting_started/02_running.md b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/02_running.md new file mode 100644 index 000000000..480411f7b --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/02_running.md @@ -0,0 +1,151 @@ +--- +title: 02 Running +weight: 2 +--- + +# 2. Running DSBench + +Now that we have DSBench installed, we will run a simple test against a DSE cluster to establish some basic familiarity with the tool. + +## Create Schema + +We will start by creating a simple schema in the database. +From your command line, go ahead and execute the following command, +replacing the `host=` with that of one of your database nodes. + + dsbench run type=cql yaml=baselines/cql-keyvalue tags=phase:schema host= + +This command is creating the following schema in your database: + +```cql +CREATE KEYSPACE baselines WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true; + +CREATE TABLE baselines.keyvalue ( + key text PRIMARY KEY, + value text +) +``` + +Let's break down each of those command line options. + +`start` tells DSBench to start an activity. + +`type=...` is used to specify the activity type. In this case we are using `cql`, which tells DSBench to use the DataStax Java Driver and execute CQL statements against a database. + +`yaml=...` is used to specify the yaml file that defines the activity. +All activities require a yaml in which you configure things such as data bindings and CQL statements, but don't worry about those details right now. + +In this example, we use `baselines/cql-keyvalue` which is a pre-built workload that is packaged with DSBench. + +`tags=phase:schema` tells DSBench to run the yaml block that has the `phase:schema` defined as one of its tags. + +In this example, that is the DDL portion of the `baselines/cql-keyvalue` workload. + +`host=...` tells DSBench how to connect to your database, only one host is necessary. + +If you like, you can verify the result of this command by decribing your keyspace in cqlsh or DataStax Studio with `DESCRIBE KEYSPACE baselines`. + +## Load Some Data + +Before running a test of typical access patterns where you want to capture the results, you need to make the test more interesting than loading an empty table. For this, we use the rampup phase. + +Before sending our test writes to the database, we will use the `stdout` activity type so we can see what DSBench is generating for CQL statements. + +Go ahead and execute the following command: + + ./dsbench start type=stdout yaml=baselines/cql-keyvalue tags=phase:rampup cycles=10 + +You should see 10 of the following statements in your console + +``` +insert into baselines.keyvalue (key, value) values (0,382062539); +insert into baselines.keyvalue (key, value) values (1,774912474); +insert into baselines.keyvalue (key, value) values (2,949364593); +insert into baselines.keyvalue (key, value) values (3,352527683); +insert into baselines.keyvalue (key, value) values (4,351686621); +insert into baselines.keyvalue (key, value) values (5,114304900); +insert into baselines.keyvalue (key, value) values (6,439790106); +insert into baselines.keyvalue (key, value) values (7,564330072); +insert into baselines.keyvalue (key, value) values (8,296173906); +insert into baselines.keyvalue (key, value) values (9,97405552); +``` + +One thing to know is that DSBench deterministically generates data, so the generated values will be the same from run to run. + +Now we are ready to write some data to our database. Go ahead and execute the following from your command line: + + ./dsbench start type=cql yaml=baselines/cql-keyvalue tags=phase:rampup host= cycles=100k --progress console:1s + +Note the differences between this and the command that we used to generate the schema. + +`tags=phase:rampup` is running the yaml block in `baselines/cql-keyvalue` that has only INSERT statements. + +`cycles=100k` will run a total of 100,000 operations, in this case, 100,000 writes. You will want to pick an appropriately large number of cycles in actual testing to make your main test meaningful. + +`--progress console:1s` will print the progression of the run to the console every 1 second. + +You should see output that looks like this +``` +baselines/cql-keyvalue: 0.00%/Running (details: min=0 cycle=1 max=100000) +baselines/cql-keyvalue: 0.00%/Running (details: min=0 cycle=1 max=100000) +baselines/cql-keyvalue: 0.32%/Running (details: min=0 cycle=325 max=100000) +baselines/cql-keyvalue: 1.17%/Running (details: min=0 cycle=1171 max=100000) +baselines/cql-keyvalue: 2.36%/Running (details: min=0 cycle=2360 max=100000) +baselines/cql-keyvalue: 3.65%/Running (details: min=0 cycle=3648 max=100000) +baselines/cql-keyvalue: 4.61%/Running (details: min=0 cycle=4613 max=100000) +baselines/cql-keyvalue: 5.59%/Running (details: min=0 cycle=5593 max=100000) +baselines/cql-keyvalue: 7.14%/Running (details: min=0 cycle=7138 max=100000) +baselines/cql-keyvalue: 8.87%/Running (details: min=0 cycle=8868 max=100000) +... +baselines/cql-keyvalue: 100.00%/Finished (details: min=0 cycle=100000 max=100000) +``` + +## Run main workload + +Now that we have a base dataset of 100k rows in the database, we will now run a mixed read / write workload, by default this runs a 50% read / 50% write workload. + + ./dsbench start type=cql yaml=baselines/cql-keyvalue tags=phase:main host= cycles=100k cyclerate=5000 threads=50 --progress console:1s + +You should see output that looks like this: +``` +Logging to logs/scenario_20190812_154431_028.log +baselines/cql-keyvalue: 0.50%/Running (details: min=0 cycle=500 max=100000) +baselines/cql-keyvalue: 2.50%/Running (details: min=0 cycle=2500 max=100000) +baselines/cql-keyvalue: 6.70%/Running (details: min=0 cycle=6700 max=100000) +baselines/cql-keyvalue: 11.16%/Running (details: min=0 cycle=11160 max=100000) +baselines/cql-keyvalue: 14.25%/Running (details: min=0 cycle=14250 max=100000) +baselines/cql-keyvalue: 18.41%/Running (details: min=0 cycle=18440 max=100000) +baselines/cql-keyvalue: 22.76%/Running (details: min=0 cycle=22760 max=100000) +baselines/cql-keyvalue: 27.27%/Running (details: min=0 cycle=27300 max=100000) +baselines/cql-keyvalue: 31.81%/Running (details: min=0 cycle=31810 max=100000) +baselines/cql-keyvalue: 36.34%/Running (details: min=0 cycle=36340 max=100000) +baselines/cql-keyvalue: 40.90%/Running (details: min=0 cycle=40900 max=100000) +baselines/cql-keyvalue: 45.48%/Running (details: min=0 cycle=45480 max=100000) +baselines/cql-keyvalue: 50.05%/Running (details: min=0 cycle=50050 max=100000) +baselines/cql-keyvalue: 54.36%/Running (details: min=0 cycle=54360 max=100000) +baselines/cql-keyvalue: 58.91%/Running (details: min=0 cycle=58920 max=100000) +baselines/cql-keyvalue: 63.40%/Running (details: min=0 cycle=63400 max=100000) +baselines/cql-keyvalue: 66.96%/Running (details: min=0 cycle=66970 max=100000) +baselines/cql-keyvalue: 71.61%/Running (details: min=0 cycle=71610 max=100000) +baselines/cql-keyvalue: 76.11%/Running (details: min=0 cycle=76130 max=100000) +baselines/cql-keyvalue: 80.66%/Running (details: min=0 cycle=80660 max=100000) +baselines/cql-keyvalue: 85.22%/Running (details: min=0 cycle=85220 max=100000) +baselines/cql-keyvalue: 89.80%/Running (details: min=0 cycle=89800 max=100000) +baselines/cql-keyvalue: 94.46%/Running (details: min=0 cycle=94460 max=100000) +baselines/cql-keyvalue: 98.93%/Running (details: min=0 cycle=98930 max=100000) +baselines/cql-keyvalue: 100.00%/Finished (details: min=0 cycle=100000 max=100000) +``` + +We have a few new command line options here: + +`tags=phase:main` is using a new block in our activity's yaml that contains both read and write queries. + +`threads=50` is an important one. The default for DSBench is to run with a single thread. This is not adequate for workloads that will be running many operations, so threads is used as a way to increase concurrency on the client side. + +`cyclerate=5000` is used to control the operations per second that are initiated by DSBench. This command line option is the primary means to rate limit the workload and here we are running at 5000 ops/sec. + +## Now What? + +Note in the above output, we see `Logging to logs/scenario_20190812_154431_028.log`. + +By default DSBench records the metrics from the run in this file, we will go into detail about these metrics in the next section Viewing Results. \ No newline at end of file diff --git a/engine-docs/src/main/resources/docs-for-nb/02_getting_started/03_getting_results.md b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/03_getting_results.md new file mode 100644 index 000000000..d3de9f2ab --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/03_getting_results.md @@ -0,0 +1,44 @@ +--- +title: 03 Getting Results +weight: 3 +--- + +# 3. Getting Results + +Coming off of our first run with DSBench, we ran a very simple workload against our database. In that example, we saw that DSBench writes to a log file and it is in that log file where the most basic form of metrics are displayed. + +## Log File Metrics + +For our previous run, we saw that DSBench was writing to `logs/scenario_20190812_154431_028.log` + +Even when you don't configure DSBench to write its metrics to another location, it will periodically report all the metrics to the log file. +At the end of a scenario, before DSBench shuts down, it will flush the partial reporting interval again to the logs. This means you can always +look in the logs for metrics information. + +:::warning +If you look in the logs for metrics, be aware that the last report will only contain a partial interval of results. When looking at the last partial window, only metrics which average over time or which compute the mean for the whole test will be meaningful. +::: + + +Below is a sample of the log that gives us our basic metrics. There is a lot to digest here, for now we will only focus a subset of the most important metrics. + +``` +2019-08-12 15:46:00,274 INFO [main] i.e.c.ScenarioResult [ScenarioResult.java:48] -- BEGIN METRICS DETAIL -- +2019-08-12 15:46:00,294 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=GAUGE, name=baselines/cql-keyvalue.cycles.config.burstrate, value=5500.0 +2019-08-12 15:46:00,295 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=GAUGE, name=baselines/cql-keyvalue.cycles.config.cyclerate, value=5000.0 +2019-08-12 15:46:00,295 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=GAUGE, name=baselines/cql-keyvalue.cycles.waittime, value=3898782735 +2019-08-12 15:46:00,298 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=HISTOGRAM, name=baselines/cql-keyvalue.resultset-size, count=100000, min=0, max=1, mean=8.0E-5, stddev=0.008943914131967056, median=0.0, p75=0.0, p95=0.0, p98=0.0, p99=0.0, p999=0.0 +2019-08-12 15:46:01,703 INFO [main] i.e.c.ScenarioResult [ScenarioResult.java:56] -- END METRICS DETAIL -- +``` + + +The log contains lots of information on metrics, but this is obviously _not_ the most desirable way to consume metrics from DSBench. + +We recommend that you use one of these methods, according to your environment or tooling available: + +1. `--docker-metrics` with a local docker-based grafana dashboard (See the section on Docker Based Metrics) +2. Send your metrics to a dedicated graphite server with `--report-graphite-to graphitehost` +3. Record your metrics to local CSV files with `--report-csv-to my_metrics_dir` +4. Record your metrics to HDR logs with `--log-histograms my_hdr_metrics.log` + +See the command line reference for details on how to route your metrics to a metrics collector or format of your preference. diff --git a/engine-docs/src/main/resources/docs-for-nb/02_getting_started/04_reading_metrics.md b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/04_reading_metrics.md new file mode 100644 index 000000000..cb9668657 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/04_reading_metrics.md @@ -0,0 +1,63 @@ +--- +title: 04 Reading Metrics +weight: 4 +--- + +# 4. Reading Metrics + +A set of core metrics are provided for every workload that runs with DSBench, regardless of the activity type and protocol used. This section explains each of these metrics and shows an example of them from the log file. + +## metric: result + +This is the primary metric that should be used to get a quick idea of the throughput and latency for a given run. It encapsulates the entire operation life cycle ( ie. bind, execute, get result back ). + +For this example we see that we averaged 3732 operations / second with 3.6ms 75th percentile latency and 23.9ms 99th percentile latency. Note the raw metrics are in microseconds. This duration_unit may change depending on how a user configures dsbench, so always double-check it. + +``` +2019-08-12 15:46:01,310 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=TIMER, name=baselines/cql-keyvalue.result, count=100000, min=233.48, max=358596.607, mean=3732.00338612, stddev=10254.850416061185, median=1874.815, p75=3648.767, p95=10115.071, p98=15855.615, p99=23916.543, p999=111292.415, mean_rate=4024.0234405430424, m1=3514.053841156124, m5=3307.431472596865, m15=3268.6786509004132, rate_unit=events/second, duration_unit=microseconds +``` + +## metric: result-success + +This metric shows whether there were any errors during the run. You can confirm that the count is equal to the number of cycles for the run if you are expecting or requiring zero failed operations. + +Here we see that all 100k of our cycles succeeded. Note that the metrics for throughput and latency here are slightly different than the `results` metric simply because this is a separate timer that only includes operations which completed with no exceptions. + +``` +2019-08-12 15:46:01,452 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=TIMER, name=baselines/cql-keyvalue.result-success, count=100000, min=435.168, max=358645.759, mean=3752.40990808, stddev=10251.524945886964, median=1889.791, p75=3668.479, p95=10154.495, p98=15884.287, p99=24280.063, p999=111443.967, mean_rate=4003.3090048756894, m1=3523.40328629036, m5=3318.8463896065778, m15=3280.480326762243, rate_unit=events/second, duration_unit=microseconds +``` + +## metric: resultset-size + +For read workloads, this metric shows the size of result sent back to DSBench from the server. This is useful to confirm that you are reading rows that already exist in the database. + +TODO: talk about mix of read / writes and how that affects this metric +``` +2019-08-12 15:46:00,298 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=HISTOGRAM, name=baselines/cql-keyvalue.resultset-size, count=100000, min=0, max=1, mean=8.0E-5, stddev=0.008943914131967056, median=0.0, p75=0.0, p95=0.0, p98=0.0, p99=0.0, p999=0.0 +``` + +#### metric: tries + +DSBench will retry failures 10 times by default, this is configurable via the `maxtries` command line option < link >. This metric shows a histogram of the number of tries that each operation required, in this example, there were no retries as the `count` is 100k. +``` +2019-08-12 15:46:00,341 INFO [main] i.e.c.ScenarioResult [Slf4jReporter.java:373] type=HISTOGRAM, name=baselines/cql-keyvalue.tries, count=100000, min=1, max=1, mean=1.0, stddev=0.0, median=1.0, p75=1.0, p95=1.0, p98=1.0, p99=1.0, p999=1.0 +``` + +### More Metrics + +DSBench extends many ways to report the metrics from a run, including: + +- Built-in Docker Dashboard +- Reporting to CSV +- Reporting to Graphite +- Reporting to HDR + + +To get more information on these options, see the output of + + dsbench --help + +### Congratulations + +You have completed your first run with DSBench! Let's head over to the Next Steps section < link > to talk about the possibilities that are now at our fingertips. + diff --git a/engine-docs/src/main/resources/docs-for-nb/02_getting_started/05_next_steps.md b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/05_next_steps.md new file mode 100644 index 000000000..b2b8d6fb6 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/05_next_steps.md @@ -0,0 +1,35 @@ +--- +title: 05 Next Steps +weight: 5 +--- + +# 5. Next Steps + +Now that you've run dsbench for the first time and seen what it does, you can choose what level of customization you want for further testing. + +The sections below describe key areas that users typically customize when working with dsbench. + +Everyone who uses DSBench will want to get familiar with the basics section below. This is essential reading for new and experienced testers alike. + +## High-Level Users + +Several canonical workloads are already baked-in to dsbench for immediate use. If you are simply wanting to drive workloads from dsbench without building a custom workload, then you'll want to learn about the available workloads and their options. + +Recommended reading for this is: +1. 'Built-In Workloads' +2. 'DSBench Basics' + +## Workload Builders + +If you want to use dsbench to build a tailored workload that closely emulates what a specific application would do, then you can build a YAML file that specifies all of the details of an iterative workload. You can specify the access patterns, data distributions, and more. + +The recommended reading for this is: + +1. 'DSBench Basics' +2. All of the 'Designing Workloads' section. +3. The online examples (find the links in the Designing Workloads section.) + +## Scenario Developers + +The underlying runtime for a scenario in dsbench is based on EngineBlock, +which means it has all the scripting power that comes with that. For advanced scenario designs, iterative testing models, or analysis methods, you can use ECMAScript to control the scenario from start to finish. This is an advanced feature that is not recommended for first-time users. A guide for scenario developers will be released in increments. diff --git a/engine-docs/src/main/resources/docs-for-nb/02_getting_started/index.md b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/index.md new file mode 100644 index 000000000..af7c5f163 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/02_getting_started/index.md @@ -0,0 +1,9 @@ +--- +title: Getting Started +weight: 20 +--- + +# Getting Started + +In this Getting Started track, we will walk you through your first test run with DSBench and explain the minimal set of information that you will need to get off the ground. We recommend that you go through the steps in this section in order, as each step builds on the last. + diff --git a/engine-docs/src/main/resources/docs-for-nb/03_basics/01_command_line.md b/engine-docs/src/main/resources/docs-for-nb/03_basics/01_command_line.md new file mode 100644 index 000000000..1216b86b4 --- /dev/null +++ b/engine-docs/src/main/resources/docs-for-nb/03_basics/01_command_line.md @@ -0,0 +1,174 @@ +--- +title: DSBench CLI Options +weight: 01 +--- + +# DSBench CLI Options + +This is the same documentation you get in markdown format with the +`dsbench --help` command. + +--------------------------------------- + + +Help ( You're looking at it. ) + + --help + +Short options, like '-v' represent simple options, like verbosity. +Using multiples increases the level of the option, like '-vvv'. + +Long options, like '--help' are top-level options that may only be +used once. These modify general behavior, or allow you to get more +details on how to use dsbench. + +All other options are either commands, or named arguments to commands. +Any single word without dashes is a command that will be converted +into script form. Any option that includes an equals sign is a +named argument to the previous command. The following example +is a commandline with a command *start*, and two named arguments +to that command. + + dsbench start type=diag alias=example + +### Discovery options ### + +These options help you learn more about running dsbench, and +about the plugins that are present in your particular version. + +Get a list of additional help topics that have more detailed +documentation: + + dsbench help topics + +Provide specific help for the named activity type: + + dsbench help + +List the available activity types + + --list-activity-types + +Provide the metrics that are available for scripting + + --list-metrics [ ] + +### Execution Options ### + +This is how you actually tell dsbench what scenario to run. Each of these +commands appends script logic to the scenario that will be executed. +These are considered as commands, can occur in any order and quantity. +The only rule is that arguments in the arg=value form will apply to +the preceding script or activity. + +Add the named script file to the scenario, interpolating named parameters: + + script