Skip to content

Commit fec311b

Browse files
pmem/benchmarking repo initialisation commit
0 parents  commit fec311b

File tree

3 files changed

+177
-0
lines changed

3 files changed

+177
-0
lines changed

CONTRIBUTING.md

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# Contributing to benchmarking
2+
3+
- [Opening New Issues](#opening-new-issues)
4+
- [Code Style](#code-style)
5+
- [Submitting Pull Requests](#submitting-pull-requests)
6+
- [Configuring Github fork](#configuring-github-fork)
7+
8+
# Opening New Issues
9+
10+
Please log bugs or suggestions as [GitHub issues](https://github.com/pmem/benchmarking/issues).
11+
Details such as OS and other components version are always appreciated.
12+
13+
# Code Style
14+
15+
* Indent with tabs (width: 8)
16+
* Max 90 chars per line
17+
18+
**NOTE**: We're not using specific format tool yet - feel free to propose your favourite.
19+
20+
# Submitting Pull Requests
21+
22+
We take outside code contributions to `benchmarking` through GitHub pull requests.
23+
24+
**NOTE: If you do decide to implement code changes and contribute them,
25+
please make sure you agree your contribution can be made available under the
26+
[BSD-style License used for benchmarking](LICENSE).**
27+
28+
**NOTE: Submitting your changes also means that you certify the following:**
29+
30+
```
31+
Developer's Certificate of Origin 1.1
32+
33+
By making a contribution to this project, I certify that:
34+
35+
(a) The contribution was created in whole or in part by me and I
36+
have the right to submit it under the open source license
37+
indicated in the file; or
38+
39+
(b) The contribution is based upon previous work that, to the best
40+
of my knowledge, is covered under an appropriate open source
41+
license and I have the right under that license to submit that
42+
work with modifications, whether created in whole or in part
43+
by me, under the same open source license (unless I am
44+
permitted to submit under a different license), as indicated
45+
in the file; or
46+
47+
(c) The contribution was provided directly to me by some other
48+
person who certified (a), (b) or (c) and I have not modified
49+
it.
50+
51+
(d) I understand and agree that this project and the contribution
52+
are public and that a record of the contribution (including all
53+
personal information I submit with it, including my sign-off) is
54+
maintained indefinitely and may be redistributed consistent with
55+
this project or the open source license(s) involved.
56+
```
57+
58+
In case of any doubt, the gatekeeper may ask you to certify the above in writing,
59+
i.e. via email or by including a `Signed-off-by:` line at the bottom
60+
of your commit comments.
61+
62+
To improve tracking of who is the author of the contribution, we kindly ask you
63+
to use your real name (not an alias) when committing your changes to PMEMKV:
64+
```
65+
Author: Random J Developer <[email protected]>
66+
```
67+
68+
# Configuring Github fork
69+
70+
To build and submit documentation as an automatically generated pull request,
71+
the repository has to be properly configured.
72+
73+
* [Personal access token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) for Github account has to be generated.
74+
* Such personal access token has to be set in benchmarking repository's
75+
[secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets)
76+
as `DOC_UPDATE_GITHUB_TOKEN` variable.
77+
78+
* `DOC_UPDATE_BOT_NAME` secret variable has to be set. In most cases it will be
79+
the same as Github account name.
80+
81+
* `DOC_REPO_OWNER` secret variable has to be set. Name of the Github account,
82+
which will be target to make an automatic pull request with documentation.
83+
In most cases it will be the same as Github account name.
84+
85+
To enable automatic images pushing to Github Container Registry, following variables:
86+
87+
* `CONTAINER_REG` existing environment variable (defined in workflow files, in .github/ directory)
88+
has to be updated to contain proper GitHub Container Registry address (to forking user's container registry),
89+
90+
* `GH_CR_USER` secret variable has to be set up - an account (with proper permissions) to publish
91+
images to the Container Registry (tab **Packages** in your GH profile/organization).
92+
93+
* `GH_CR_PAT` secret variable also has to be set up - Personal Access Token
94+
(with only read & write packages permissions), to be generated as described
95+
[here](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token#creating-a-token)
96+
for selected account (user defined in above variable).

LICENSE

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
SPDX-License-Identifier: BSD-3-Clause
2+
Copyright 2021, Intel Corporation
3+
4+
Redistribution and use in source and binary forms, with or without
5+
modification, are permitted provided that the following conditions
6+
are met:
7+
8+
* Redistributions of source code must retain the above copyright
9+
notice, this list of conditions and the following disclaimer.
10+
11+
* Redistributions in binary form must reproduce the above copyright
12+
notice, this list of conditions and the following disclaimer in
13+
the documentation and/or other materials provided with the
14+
distribution.
15+
16+
* Neither the name of the copyright holder nor the names of its
17+
contributors may be used to endorse or promote products derived
18+
from this software without specific prior written permission.
19+
20+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31+
32+
33+
Everything in this source tree is covered by the previous license.

README.md

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Redis on KVM workload
2+
3+
In this readme, you will find out how to run a memtier benchmark on a cluster of KVM-hosted Redis servers.
4+
5+
## The test environment details
6+
7+
* Dedicated LAN or back-to-back (b2b) connection is used for benchmark traffic
8+
* MacVTap interface is used to avoid the performance penalty of linux bridge
9+
* Client and server machines are coupled using their NUMA-respective NICs (memtier_benchmark in a docker container resides in the client machine whereas VMs with Redis database instance reside in the server machine)
10+
* VM's are created from pre-existing qcow2 images and use cloud-init configdrives for a basic set-up
11+
* Most of the software runs in docker containers, the OS is Linux
12+
* Consul is a DNS-based service discovery. (www.consul.io)
13+
* If you want to check if the Redis service is up and running, you can use Consul that runs on each virtual machine. Consul originates from the server machine and runs as an agent on each VM.
14+
* We use Consul to discover IPs’ of Redis services in the stages of populating Redis databases and running the benchmark.
15+
* You can optionally export benchmark results to an S3 bucket
16+
17+
## Prework
18+
19+
You will need two machines: a client and a server. Once you physically set up your machines, you will have to configure them in order to run the memtier benchmark.
20+
21+
```mermaid
22+
graph LR
23+
subgraph Benchmark client
24+
C1[40GB ethernet]
25+
C2[40GB ethernet]
26+
C3[ethernet]
27+
end
28+
SW1[40GB switch]
29+
SW2[mgmt network]
30+
subgraph DB server
31+
S1[40GB ethernet]
32+
S2[40GB ethernet]
33+
S3[ethernet]
34+
end
35+
C1 --- SW1
36+
C2 --- SW1
37+
C3 --- SW2
38+
SW1 --- S1
39+
SW1 --- S2
40+
SW2 --- S3
41+
```
42+
43+
Before you start working with the repository, make sure you have installed:
44+
45+
* `Docker` on your client and server machines
46+
* `Ansible 2.7`
47+
* A python module – `netaddr` on your client machine. You can install it with your package manager or using pip.
48+

0 commit comments

Comments
 (0)