https://github.com/atlarge-research/trigger-perf
TriggerPerf is a custom benchmarking tool designed to evaluate the performance of datastore triggers.
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
Repository
TriggerPerf is a custom benchmarking tool designed to evaluate the performance of datastore triggers.
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
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
/logsdirectory for later analysis. Run the/proc_logs/latency_data_processing.ipynbto generate graphs.bash python teardown.py - Teardown: To remove all datastore and trigger configurations from your AWS account, run the
teardown.pyscript:
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
/driversdirectory. - 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
- Website: http://atlarge-research.com/
- Twitter: LargeResearch
- Repositories: 24
- Profile: https://github.com/atlarge-research
Massivizing Computer Systems
GitHub Events
Total
- Push event: 5
Last Year
- Push event: 5
Dependencies
- 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
- 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
- eslint ^6.8.0 development
- eslint-config-prettier ^6.10.1 development
- prettier ^2.0.2 development
- @jsxtools/resize-observer ^1.0.4
- 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