Commit graph

57 commits

Author SHA1 Message Date
jaffee
c8b0fecd4a add random query benchmark 2016-11-28 15:45:18 -07:00
jaffee
069484ab0e bspawn can create and tear down cluster for benchmarks 2016-11-28 15:45:18 -07:00
jaffee
05a70d5fb2 refactor Init and provide ClientType option
Benchmark implementations can now use 'HasClient' as a component which provides
an Init method which sets up the pilosa client in a configurable way.
Implementations must still expose the ClientType argument through ConsumeFlags
and describe it in Usage()
2016-11-28 15:45:17 -07:00
jaffee
da024fb0d8 add agentNum to benchmark Init as well as run 2016-11-28 15:45:17 -07:00
jaffee
488ed1259c fix broken context stuff after rebase 2016-11-28 15:45:17 -07:00
jaffee
85b4e83c2d add MultiDBSetBits benchmark 2016-11-28 15:45:17 -07:00
jaffee
ce34faa9c9 forgot to check in randspawn benchmark file 2016-11-28 15:45:17 -07:00
jaffee
9cc3c76297 add RandomSetBits benchmark demonstrating seeds 2016-11-28 15:45:17 -07:00
jaffee
0d2a478153 add bspawn command and json config file 2016-11-28 15:45:17 -07:00
jaffee
72e8dba966 redirect pilosactl create -local output to file 2016-11-28 15:45:17 -07:00
jaffee
8c7e02b5ee simplify and rename SetBits Benchmark 2016-11-28 15:45:17 -07:00
jaffee
7db4b55b49 renaming stuff to be more idiomatic 2016-11-28 15:45:17 -07:00
jaffee
92fcec82b3 setup and support BenchmarkCmd interface 2016-11-28 15:45:17 -07:00
jaffee
5ac7cab57e move pilosa-benchmark-agent under pilosactl 2016-11-28 15:45:17 -07:00
jaffee
9dc50268c9 fix usage string for benchmark agent 2016-11-28 15:45:17 -07:00
jaffee
0df040c9df add cluster creation to pilosactl 2016-11-28 15:45:17 -07:00
jaffee
423fdb3841 add benchmark agent 2016-11-28 15:45:17 -07:00
Cody Soyland
5206461d51 Migrate from Umbel to Pilosa organization on Github 2016-11-28 15:21:11 -06:00
Ben Johnson
6e304e8e7d Add context to pilosactl. 2016-11-16 19:53:40 -07:00
Ben Johnson
3192897f55 Add pilosactl check. 2016-10-26 13:51:23 -06:00
Ben Johnson
c6ca86f2d9 Add ExpvarStatsClient and basic tracking.
A `StatsClient` for `expvar` is added so we can track Stats through
the `/debug/vars` endpoint. Tags are nested inside maps so that we
can see stats for db, frame & slice.

Also added a `MultiStatsClient` for chaining multiple `StatsClient`
implementations together (e.g. `expvar` and DataDog).
2016-10-20 14:35:14 -06:00
Ben Johnson
d5ad5fbb05 Add profile & bitmap attribute anti-entropy.
Adds block-based anti-entropy for the attribute stores and hooks
into the existing `IndexSyncer` to regulate frequency of syncs.
2016-09-30 11:47:43 -06:00
Todd Gruben
0a9dcee2f1 merge 2016-09-22 03:05:53 -05:00
Ben Johnson
46bef724a5 Add import sorting command.
Introduces new `pilosactl sort` to sort import files by bit
position so they can be inserted faster. Also optimizes container
scanning and adds a `-buffer-size` flag to `import`.
2016-09-21 14:33:24 -06:00
Ben Johnson
cf4297a771 Optimize TopN() w/ source query.
This commit makes several changes to optimize the TopN() query:

- Reduce highbits() back from 24-bits to 16-bits.
- Reduce MaxArraySize back from 2^20 to 4096.
- Optimize bitmap count invalidation.
- Parallelize TopN() across nodes.
- Parallelize TopN() across slices.
2016-09-13 14:55:56 -06:00
Ben Johnson
089650b845 Remove post-mmap resizing 2016-09-01 09:18:52 -06:00
Ben Johnson
39e0d22598 Add export command to pilosactl
CSV exports can now be done with the pilosactl application:

	$ pilosactl -d mydb -f myframe -o MYFILE.csv

If `-o` is not specified then the CSV is written to STDOUT. The
exporter combines all slices for the db/frame to into a single
concatenated CSV file.
2016-08-30 16:18:12 -06:00
Ben Johnson
4883dea5f8 add CLI profiling
This commit adds the `-cpuprofile` flag to the `pilosa` binary so
that startup can be profiled.
2016-08-12 10:58:45 -06:00
Ben Johnson
a063421467 serialize cache flush
This commit moves the cache flush to the `Index` and only serializes
a single fragment at a time.

Also included in this commit is the `inspect` command for the
`pilsoactl` binary. This provides insight into pilosa data files.
2016-08-05 14:58:37 -06:00
Todd Gruben
ef2cbcdc4b merge 2016-05-25 09:18:57 -05:00
Ben Johnson
91874bdaee pilosa-bench skeleton 2016-05-17 15:45:24 -06:00
Todd Gruben
cc7d0abe10 Merge branch 'master' of github.com:umbel/pilosa 2016-05-13 19:59:24 -05:00
Todd Gruben
a5b84e092a changed slicewidth 2016-05-13 19:59:14 -05:00
Ben Johnson
a0a519bfdf refactor main into pilosa.Server
This commit refactors most of the code in `cmd/pilosa` to
`pilosa.Server` so that it can be reused in long running cluster
testing.
2016-05-13 14:39:09 -06:00
Ben Johnson
de698aa03e consensus block merge
This commit refactors the anti-entropy system to fetch data from
all replicated blocks and only set/clear bits which deviate from
the consensus between all blocks.

An example of this is if 3 nodes had the following bits set for
a single bitmap:

	Node A: 1 2 3
	Node B:   2   4
	Node C: 1 2   4

Then only bits which are set on a majority will be set. In this
case bits 1, 2, & 4 are set but 3 only exists on a single node.

The node performing the merge would then determine the following
set/clear diffs for each node:

	Node A: clear(3), set(4)
	Node B: set(1)
	Node C: none

Once the merge is performed and all nodes receive their diff
instructions then the nodes will be in sync:

	Node A: 1 2 4
	Node B: 1 2 4
	Node C: 1 2 4

There still exists situations where bits can be reset. If Node A
is up and Node B & C are down then Node A's bits will be reset
once B & C come back online. We should add write consistency
settings for incoming writes so that we can ensure that a quorum
is written to before returning a success. This is outside the
scope of this commit though.
2016-05-06 16:19:10 -06:00
Ben Johnson
f6bb605ee8 add anti-entropy monitor 2016-04-18 16:32:27 -06:00
Ben Johnson
26fd00ff3e add 'pilosactl bench' command
This commit adds a simple benchmarking utility to the `pilosactl`
binary. It currently only supports individual `SetBit()` commands
but it's a good start towards making a generic benchmarking
framework at the integration level.

The subcommands and usage/help messages were also cleaned up to
output correctly.
2016-03-31 15:49:57 -06:00
Ben Johnson
0ab4ee6f07 add frame restore for cluster transfer
This commit adds an endpoint to restore an entire frame from
another cluster. Multiple hosts can use this endpoint to copy
and rebalance a cluster to a new cluster.
2016-03-15 14:42:42 -06:00
Ben Johnson
569bafdc7d add bulk call support to the query endpoint
This commit changes the `pql.Query` so that it can accept one or more
top-level calls instead of only one.

The query request format change because a query with a single call is
still valid. However, the result format now returns a `results` field
that has one result for each top-level call. The `profiles` field is
still the same, however, it combines all profiles from all bitmap
responses into one return so that there's not duplicate attributes.

Fixes #59
2016-03-08 14:34:37 -07:00
Ben Johnson
5d79555d3e add backup/restore to pilosactl
This commit adds two commands:

    pilosactl backup
    pilosactl restore

The `Client` implementations have also been added to support these
commands:

    func (c *Client) BackupTo(w io.Writer, db, frame string) error
    func (c *Client) RestoreFrom(r io.Reader, db, frame string) error

Backups occur on a per-frame basis and all slices from the cluster
are packed into a single tar file. The backup tool attempts to
read from owner nodes in a random order and will retry against
the next owner if one fails.

During restore, the slices are restored to all owner nodes. This
allows users to backup a frame from one cluster and restore it
to a different one -- even if the topology of the new cluster is
different.
2016-02-29 08:38:24 -07:00
Todd Gruben
fb3e563a7c issue 41 2016-02-25 15:43:52 -06:00
Ben Johnson
cca8970019 add Range() support
This commit adds support for setting bits in time-based frames.
2016-02-23 14:53:03 -07:00
Todd Gruben
3bd5182f96 added support for returning SetBit effect 2016-02-16 17:38:56 -06:00
Ben Johnson
b28e961f2e add cache persistence
This commit adds the ability of the Fragment to flush the cache
bitmap IDs to disk periodically. They can then be reloaded when
the fragment is reopened.
2016-02-13 10:02:53 -07:00
Ben Johnson
e0937b79c0 add bitmap and profile attribute support
This commit adds the ability to set string, integer, and boolean
values on bitmaps and profiles within Pilosa. Bitmap attributes
are automatically returned when making a `Bitmap()` call. Profile
attributes must be requested by setting `profile=true` in the
URL.

The function names have also been renamed to initial caps so that
the PQL query language can support math operations in the future.
2016-02-01 08:44:33 -07:00
Ben Johnson
c12c186a73 cluster-wide import
This commit fixes the `pilosactl import` command to import data files
across an entire cluster of machines.

A `pilosactl config` command is also added to provide a default config.
2016-01-05 20:09:17 -07:00
Ben Johnson
320e9811d8 bulk importer
This commit adds the pilosactl binary with a single `import` command.
The import allows users to bulk import data from a CSV file.
2016-01-02 15:10:17 -07:00
Ben Johnson
cf6e3cfcc7 integration testing
This commit adds integration testing for the `cmd/pilosa` package.
It uses randomly generated `set()` data and verifies the data using `get()`
both immediately after the insert and after restart.
2015-12-22 16:33:27 -07:00
Todd Gruben
8cbf77a11d added benchmark for assembly vs native popcount 2015-12-22 09:34:26 -06:00
Ben Johnson
1fb85fd0e3 main: merge host and addr 2015-12-04 15:38:13 -07:00