diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index ff74d748..57cd9b73 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -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", diff --git a/README.md b/README.md index d049195b..80895e4f 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/bench-results/2016050501-config/analyze.yaml b/bench-results/2016050501-config/analyze.yaml new file mode 100644 index 00000000..28818805 --- /dev/null +++ b/bench-results/2016050501-config/analyze.yaml @@ -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 diff --git a/bench-results/2016050501-config/control-01-etcdv2.yaml b/bench-results/2016050501-config/control-01-etcdv2.yaml new file mode 100644 index 00000000..dd0e3a7e --- /dev/null +++ b/bench-results/2016050501-config/control-01-etcdv2.yaml @@ -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 diff --git a/control/config.go b/control/config.go index 7d4404dd..3a3f347c 100644 --- a/control/config.go +++ b/control/config.go @@ -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"` diff --git a/control/config_test.go b/control/config_test.go index aecc440e..80cad5a4 100644 --- a/control/config_test.go +++ b/control/config_test.go @@ -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) } diff --git a/control/control.go b/control/control.go index f3a95b2a..60b339ef 100644 --- a/control/control.go +++ b/control/control.go @@ -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] diff --git a/control/test.yaml b/control/test.yaml index 35d5a003..c354d5b6 100644 --- a/control/test.yaml +++ b/control/test.yaml @@ -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 diff --git a/control/util.go b/control/util.go index 6e2b1a63..04b12c18 100644 --- a/control/util.go +++ b/control/util.go @@ -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 {