*: add same key option

This commit is contained in:
Gyu-Ho Lee 2016-05-05 13:34:29 -07:00
parent 487c32888e
commit 3150f6ccb5
9 changed files with 162 additions and 19 deletions

36
Godeps/Godeps.json generated
View File

@ -25,48 +25,48 @@
},
{
"ImportPath": "github.com/coreos/etcd/auth/authpb",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/client",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/clientv3",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/etcdserverpb",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/mvcc/mvccpb",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/pathutil",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/tlsutil",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/types",
"Comment": "v2.3.0-664-gb776153",
"Rev": "b7761530e1d5b9f404811d63786df60023a88db9"
"Comment": "v2.3.0-672-g61add11",
"Rev": "61add11b05ed7e510ec62bca8d6216ddeb6ee979"
},
{
"ImportPath": "github.com/cpuguy83/go-md2man/md2man",

View File

@ -19,6 +19,7 @@ We keep full logs here and cloud storage(when it's over 1MB):
Test results:
- https://github.com/coreos/dbtester/tree/master/bench-results/2016050501/README.md
- https://github.com/coreos/dbtester/tree/master/bench-results/2016050301/README.md
- https://github.com/coreos/dbtester/tree/master/bench-results/2016050101/README.md
- https://github.com/coreos/dbtester/tree/master/bench-results/2016043002/README.md

View File

@ -0,0 +1,83 @@
titles:
- Write 600K keys, 1000-client, 1000-conn, 8-byte key, 256-byte value (etcd v2)
step1:
- data_path_list:
- 2016050501/01-etcdv2-1-monitor.csv
- 2016050501/01-etcdv2-2-monitor.csv
- 2016050501/01-etcdv2-3-monitor.csv
data_benchmark_path: 2016050501/01-etcdv2-timeseries.csv
output_path: 2016050501/01-etcdv2-aggregated.csv
step2:
- data_list:
- path: 2016050501/01-etcdv2-aggregated.csv
name: etcd_v2
output_path: 2016050501/01-all-aggregated.csv
step3:
- data_path: 2016050501/01-all-aggregated.csv
plot_list:
- lines:
- column: avg_latency_ms_etcd_v2
legend: etcd v2
x_axis: Second
y_axis: Latency(millisecond)
output_path_list:
- 2016050501/01-avg-latency-ms.svg
- 2016050501/01-avg-latency-ms.png
- lines:
- column: throughput_etcd_v2
legend: etcd v2
x_axis: Second
y_axis: Throughput
output_path_list:
- 2016050501/01-throughput.svg
- 2016050501/01-throughput.png
- lines:
- column: avg_cpu_etcd_v2
legend: etcd v2
x_axis: Second
y_axis: CPU
output_path_list:
- 2016050501/01-avg-cpu.svg
- 2016050501/01-avg-cpu.png
- lines:
- column: avg_memory_mb_etcd_v2
legend: etcd v2
x_axis: Second
y_axis: Memory(MB)
output_path_list:
- 2016050501/01-avg-memory.svg
- 2016050501/01-avg-memory.png
step4:
preface: |
- Google Cloud Compute Engine
- 8 vCPUs + 16GB Memory + 50GB SSD
- 1 machine(client) of 16 vCPUs + 30GB Memory + 50GB SSD
- Ubuntu 15.10
- Go master branch on 2016-05-03
- etcd v2
results:
- images:
- image_title: 2016050501/01-avg-latency-ms
image_path: https://storage.googleapis.com/dbtester-results/2016050501/01-avg-latency-ms.svg
image_type: remote
- image_title: 2016050501/01-throughput
image_path: https://storage.googleapis.com/dbtester-results/2016050501/01-throughput.svg
image_type: remote
- image_title: 2016050501/01-avg-cpu
image_path: https://storage.googleapis.com/dbtester-results/2016050501/01-avg-cpu.svg
image_type: remote
- image_title: 2016050501/01-avg-memory
image_path: https://storage.googleapis.com/dbtester-results/2016050501/01-avg-memory.svg
image_type: remote
output_path: 2016050501/README.md

View File

@ -0,0 +1,44 @@
database: etcdv2
test_name: 01-etcdv2
google_cloud_project_name: etcd-development
google_cloud_storage_key_path: /home/gyuho/gcloud-key.json
google_cloud_storage_bucket_name: dbtester-results
google_cloud_storage_sub_directory: 2016050501
peer_ips:
- 10.240.0.17
- 10.240.0.18
- 10.240.0.19
agent_port: 3500
database_port: 2379
etcd_compression: ""
# start database by sending RPC calls to agents
step1:
skip: false
zookeeper_max_client_connections: 5000
zookeeper_snap_count: 100000
# start benchmark
step2:
skip: false
bench_type: write
local_read: true
result_path: timeseries.csv
connections: 1000
clients: 1000
key_size: 8
same_key: true
value_size: 256
# value_testdata_path: /home/gyuho/testdata
total_requests: 600000
request_interval_ms: 0
etcdv3_compaction_cycle: 0
# after benchmark
step3:
skip: false
result_path: result.log

View File

@ -55,6 +55,7 @@ type Config struct {
Connections int `yaml:"connections"`
Clients int `yaml:"clients"`
KeySize int `yaml:"key_size"`
SameKey bool `yaml:"same_key"`
ValueSize int `yaml:"value_size"`
ValueTestDataPath string `yaml:"value_testdata_path"`
TotalRequests int `yaml:"total_requests"`

View File

@ -72,6 +72,12 @@ func TestReadConfig(t *testing.T) {
if c.Step2.ResultPath != "timeseries.csv" {
t.Fatalf("unexpected %s", c.Step2.ResultPath)
}
if c.Step2.KeySize != 8 {
t.Fatalf("unexpected %d", c.Step2.KeySize)
}
if !c.Step2.SameKey {
t.Fatalf("unexpected %v", c.Step2.SameKey)
}
if c.Step2.ValueTestDataPath != "/home/gyuho/testdata" {
t.Fatalf("unexpected %s", c.Step2.ValueTestDataPath)
}

View File

@ -291,6 +291,9 @@ func step2(cfg Config) error {
}
k := sequentialKey(cfg.Step2.KeySize, i)
if cfg.Step2.SameKey {
k = sameKey(cfg.Step2.KeySize)
}
if cfg.Step2.ValueTestDataPath != "" {
v = valuesBytes[i%valueSampleSize]
vs = valuesString[i%valueSampleSize]

View File

@ -30,7 +30,8 @@ step2:
result_path: timeseries.csv
connections: 100
clients: 100
key_size: 64
key_size: 8
same_key: true
value_size: 256
value_testdata_path: /home/gyuho/testdata # overwrites value_size
total_requests: 3000000

View File

@ -496,6 +496,10 @@ func sequentialKey(size, num int) string {
return strings.Repeat("0", delta) + txt
}
func sameKey(size int) string {
return strings.Repeat("a", size)
}
func walk(targetDir string) (map[string]os.FileInfo, error) {
rm := make(map[string]os.FileInfo)
visit := func(path string, f os.FileInfo, err error) error {