https://github.com/atlarge-research/trigger-perf

TriggerPerf is a custom benchmarking tool designed to evaluate the performance of datastore triggers.

https://github.com/atlarge-research/trigger-perf

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.8%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

TriggerPerf is a custom benchmarking tool designed to evaluate the performance of datastore triggers.

Basic Info
  • Host: GitHub
  • Owner: atlarge-research
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 113 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme

README.md

TriggerPerf

TriggerPerf is a custom benchmarking tool designed to evaluate the performance of datastore triggers. It currently supports three AWS datastores: S3 Standard, DynamoDB, and AuroraDB. The tool automates trigger setup and configuration, leveraging three Lambda function: Setup, Write, and Receive to create a testbed for benchmarking various trigger mechanisms. Currently TriggerPerf supports S3 Event Notifications, DynamoDB Streams and AuroraDB UDF triggers.

Usage

1. Configuration

All configurations are managed via the config.yaml file. This includes: - Datastore Parameters: Define the datastore type and its specific settings. - Experiment Details: Specify key-value sizes, throughput, and other benchmarking parameters. - AWS Credentials: Include the necessary access keys and region information. - Define experiment details and AWS credentials in config.yaml. ```bash

other inputs: "s3", "etcd", "dynamo", "aurora"

datastore: "dynamo" awsacc_id: xxxxxxxxxx region: us-east-1 ```

2. Setup & Run

Run the setup.py script to initialize and configure the benchmarking environment: - Deploys the Setup, Write, and Receive Lambda functions. - Configures the triggers for the selected datastore. - Integrates AWS CloudWatch for logging and performance metrics collection. After setup, run the main.py script to start the experiments defined in config.yaml

bash python setup.py python main.py

3. Logs & Teardown

  • Logs: Filtered logs are automatically saved to the /logs directory for later analysis. Run the /proc_logs/latency_data_processing.ipynb to generate graphs. bash python teardown.py
  • Teardown: To remove all datastore and trigger configurations from your AWS account, run the teardown.py script:

bash python teardown.py

4. Extending TriggerPerf: Adding a New Datastore

To add support for a new datastore, follow these steps:

Step 1: Create a Driver File

  • Add a new driver file inside the /drivers directory.
  • Implement necessary functions that align with the functionality of existing datastore integrations.
  • The driver should include functions for:
    • Setting up the target datastore.
    • Performing CRUD operations.

Step 2: Modify Lambda Functions

  • Update ./aws_lambdas/lambdas/initial-lmd.py:
    Add functions required to connect and interact with the new datastore.
  • Update ./aws_lambdas/lambdas/recv-lmd.py:
    Implement functions to handle the datastore's trigger mechanism.

Step 3: Maintain Consistency & Compatibility

  • Ensure the new integration adheres to TriggerPerfs existing structure and conventions.
  • This maintains seamless compatibility with the benchmarking framework.

Owner

  • Name: @Large Research
  • Login: atlarge-research
  • Kind: organization
  • Email: info@atlarge-research.com

Massivizing Computer Systems

GitHub Events

Total
  • Push event: 5
Last Year
  • Push event: 5

Dependencies

drivers/throughput_scripts/dynamo/go.mod go
drivers/throughput_scripts/etcd/go.mod go
  • github.com/akamensky/argparse v1.4.0
  • github.com/coreos/go-semver v0.3.0
  • github.com/coreos/go-systemd/v22 v22.3.2
  • github.com/gogo/protobuf v1.3.2
  • github.com/golang/protobuf v1.5.4
  • go.etcd.io/etcd/api/v3 v3.5.13
  • go.etcd.io/etcd/client/pkg/v3 v3.5.13
  • go.etcd.io/etcd/client/v3 v3.5.13
  • go.uber.org/atomic v1.7.0
  • go.uber.org/multierr v1.6.0
  • go.uber.org/zap v1.17.0
  • golang.org/x/net v0.17.0
  • golang.org/x/sys v0.13.0
  • golang.org/x/text v0.13.0
  • google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d
  • google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d
  • google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d
  • google.golang.org/grpc v1.59.0
  • google.golang.org/protobuf v1.33.0
drivers/throughput_scripts/etcd/go.sum go
  • github.com/akamensky/argparse v1.4.0
  • github.com/coreos/go-semver v0.3.0
  • github.com/coreos/go-systemd/v22 v22.3.2
  • github.com/davecgh/go-spew v1.1.0
  • github.com/davecgh/go-spew v1.1.1
  • github.com/godbus/dbus/v5 v5.0.4
  • github.com/gogo/protobuf v1.3.2
  • github.com/golang/protobuf v1.5.4
  • github.com/kisielk/errcheck v1.5.0
  • github.com/kisielk/gotool v1.0.0
  • github.com/pkg/errors v0.8.1
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/stretchr/objx v0.1.0
  • github.com/stretchr/testify v1.3.0
  • github.com/stretchr/testify v1.7.0
  • github.com/yuin/goldmark v1.1.27
  • github.com/yuin/goldmark v1.2.1
  • go.etcd.io/etcd/api/v3 v3.5.13
  • go.etcd.io/etcd/client/pkg/v3 v3.5.13
  • go.etcd.io/etcd/client/v3 v3.5.13
  • go.uber.org/atomic v1.7.0
  • go.uber.org/multierr v1.6.0
  • go.uber.org/zap v1.17.0
  • golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
  • golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550
  • golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
  • golang.org/x/mod v0.2.0
  • golang.org/x/mod v0.3.0
  • golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3
  • golang.org/x/net v0.0.0-20190620200207-3b0461eec859
  • golang.org/x/net v0.0.0-20200226121028-0de0cce0169b
  • golang.org/x/net v0.0.0-20201021035429-f5854403a974
  • golang.org/x/net v0.17.0
  • golang.org/x/sync v0.0.0-20190423024810-112230192c58
  • golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e
  • golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
  • golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
  • golang.org/x/sys v0.0.0-20190412213103-97732733099d
  • golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f
  • golang.org/x/sys v0.13.0
  • golang.org/x/text v0.3.0
  • golang.org/x/text v0.3.3
  • golang.org/x/text v0.13.0
  • golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e
  • golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e
  • golang.org/x/tools v0.0.0-20200619180055-7c47624df98f
  • golang.org/x/tools v0.0.0-20210106214847-113979e3529a
  • golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7
  • golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898
  • golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
  • golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
  • google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d
  • google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d
  • google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d
  • google.golang.org/grpc v1.59.0
  • google.golang.org/protobuf v1.33.0
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/yaml.v2 v2.2.8
  • gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
  • gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
requirements.txt pypi
setup.py pypi
venv/lib/python3.11/site-packages/IPython/testing/plugin/setup.py pypi
venv/lib/python3.11/site-packages/matplotlib/backends/web_backend/package.json npm
  • eslint ^6.8.0 development
  • eslint-config-prettier ^6.10.1 development
  • prettier ^2.0.2 development
  • @jsxtools/resize-observer ^1.0.4
venv/lib/python3.11/site-packages/numpy/_typing/setup.py pypi
venv/lib/python3.11/site-packages/numpy/array_api/setup.py pypi
venv/lib/python3.11/site-packages/numpy/compat/setup.py pypi
venv/lib/python3.11/site-packages/numpy/core/tests/examples/cython/setup.py pypi
venv/lib/python3.11/site-packages/numpy/core/tests/examples/limited_api/setup.py pypi
venv/lib/python3.11/site-packages/numpy/distutils/setup.py pypi
venv/lib/python3.11/site-packages/numpy/f2py/setup.py pypi
venv/lib/python3.11/site-packages/numpy/lib/setup.py pypi
venv/lib/python3.11/site-packages/numpy/ma/setup.py pypi
venv/lib/python3.11/site-packages/numpy/matrixlib/setup.py pypi
venv/lib/python3.11/site-packages/numpy/polynomial/setup.py pypi
venv/lib/python3.11/site-packages/numpy/testing/setup.py pypi
venv/lib/python3.11/site-packages/numpy/typing/setup.py pypi
venv/lib/python3.11/site-packages/pandas/pyproject.toml pypi
  • numpy >=1.22.4,<2; python_version<'3.11'
  • numpy >=1.23.2,<2; python_version=='3.11'
  • numpy >=1.26.0,<2; python_version>='3.12'
  • python-dateutil >=2.8.2
  • pytz >=2020.1
  • tzdata >=2022.7