Merge pull request #270 from pilosa/benchmark-day

Benchmark day
This commit is contained in:
Matthew Jaffee 2017-01-23 12:02:00 -06:00 committed by GitHub
commit dbd633ee2c
4 changed files with 21 additions and 14 deletions

View file

@ -235,24 +235,24 @@ Examples:
Create a 5 node cluster locally (using 5 different ports), with a replication factor of 2.
```
pilosactl create
-serverN 5
pilosactl create \
-serverN 5 \
-replicaN 2
```
Create a cluster on 3 remote hosts - all logs will come to local stderr, pilosa binary must be available on remote hosts. The ssh user on the remote hosts needs to be the same as your local user. Otherwise use the `ssh-user` option.
```
pilosactl create
pilosactl create \
-hosts="node1.example.com:15000,node2.example.com:15000,node3.example.com:15000"
```
Create a cluster on 3 remote hosts running OSX, but build the binary locally and copy it up. Stream the stderr of each node to a separate local log file.
```
pilosactl create
-hosts="mac1.example.com:15000,mac2.example.com:15000,mac3.example.com:15000"
-copy-binary
-goos=darwin
-goarch=amd64
pilosactl create \
-hosts="mac1.example.com:15000,mac2.example.com:15000,mac3.example.com:15000" \
-copy-binary \
-goos=darwin \
-goarch=amd64 \
-log-file-prefix=clusterlogs
```
@ -262,7 +262,9 @@ pilosactl create
E.G.
```
pilosactl bagent import -h
pilosactl bagent \
-hosts="localhost:15000,localhost:15001" \
import -h
```
Multiple subcommands and their arguments may be concatenated at the command line and they will be run serially. This is useful (i.e.) for importing a bunch of data, and then executing queries against it.
@ -270,7 +272,10 @@ Multiple subcommands and their arguments may be concatenated at the command line
This will generate and import a bunch of data, and then execute random queries against it.
```
pilosactl bagent import -max-bits-per-map=10000 random-query -iterations 100
pilosactl bagent \
-hosts="localhost:15000,localhost:15001" \
import -max-bits-per-map=10000 \
random-query -iterations 100
```
### Bspawn

View file

@ -13,7 +13,9 @@ type Benchmark interface {
// it is being run simultaneously on multiple "agents". E.G. the agentNum
// might be used to make a random seed different for each agent, or have
// each agent set a different set of bits. Init's doc string should document
// how the agentNum affects it.
// how the agentNum affects it. Every benchmark should have a 'Name' field
// set by init, which appears when the benchmark is marshalled to json as
// "name".
Init(hosts []string, agentNum int) error
// Run runs the benchmark. The return value of Run is kept generic so that

View file

@ -97,7 +97,7 @@ func (c *RemoteCluster) Start() error {
}
err = w.Close()
if err != nil {
return err
return fmt.Errorf("closing config writer: %v", err)
}
// Start pilosa on remote host

View file

@ -203,12 +203,12 @@ func (sf Fleet) OpenFile(name, perm string) (io.WriteCloser, error) {
func (sf Fleet) WriteFile(name, perm string, data io.Reader) error {
wc, err := sf.OpenFile(name, perm)
if err != nil {
return err
return fmt.Errorf("opening: %v", err)
}
_, err = io.Copy(wc, data)
if err != nil {
return err
return fmt.Errorf("copying: %v", err)
}
return wc.Close()
}