Commit graph

5570 commits

Author SHA1 Message Date
Matt Jaffee
d5cfe880f7
address race condition by getting cluster nodes with lock
needed an unlocked version of sendsync for use within the cluster, so also
implemented that. Added a number of tests trying to reproduce the issue, but was
not able to. Not sure it's worth keeping the new tests.
2019-04-05 15:40:24 -05:00
Matthew Jaffee
b263d8ccdf
Merge pull request #1928 from jaffee/op-apply-simplify
simply setting list of values with *N methods
2019-04-05 16:39:55 -04:00
Matt Jaffee
bd085e0a21
simply setting list of values with *N methods 2019-04-05 14:08:11 -05:00
Matthew Jaffee
9f8d6f6b76
Merge pull request #1930 from jaffee/1843-range-bug
add parser rule to catch old-style Range query
2019-04-05 09:33:32 -04:00
Matt Jaffee
55d9d49f2f
add executor test for deprecated range query style 2019-04-05 07:52:25 -05:00
Matt Jaffee
5458a42ad0
add parser rule to catch old-style Range query 2019-04-04 19:46:02 -05:00
Matt Jaffee
811f1b4124
move build-tagged shardwidth files to subpackage 2019-04-04 14:27:52 -05:00
Matt Jaffee
836b467d3d
add support to modify shard width at build time
use "make <x> SHARD_WIDTH=nn"

fix tests to run and pass at different shardwidths

add shardwidth22 test to circle ci
2019-04-04 13:46:26 -05:00
Cody Soyland
927e8b8942
Merge pull request #1923 from codysoyland/missing-deps
Add missing deps to go.mod/sum
2019-04-01 15:01:08 -05:00
seebs
6bfd0e208e
Merge branch 'master' into missing-deps 2019-04-01 14:47:39 -05:00
Matthew Jaffee
e59e067353
Merge pull request #1925 from jaffee/1922-data-loss
fix data loss bug and robustify test
2019-04-01 14:38:20 -05:00
Matt Jaffee
6130764ede
fix data loss bug and robustify test
Data loss was occuring after a cluster restart. The issue was during the
unmarshaling of the op log when multiple values had been written to the log. The
lines in question were like "changed = changed || b.DirectAdd(v)" in which the
DirectAdd would only be executed when changed was initially false, once it was
true, it would never be executed again.
2019-04-01 14:14:26 -05:00
Cody Soyland
8fcfba7a65 Add missing deps to go.mod/sum 2019-04-01 11:48:24 -05:00
Matthew Jaffee
4f2b757300
Merge pull request #1920 from jaffee/raise-file-map-defaults
increase default max map and file counts [no changelog]
2019-03-29 18:06:48 -05:00
Matt Jaffee
4ed2bfb3ca
increase default max map and file counts
Explained in a comment:

 We default these Max File/Map counts very high. This is basically a
 backwards compatibility thing where we don't want to cause different
 behavior for those who had previously set their system limits high,
 and weren't experiencing any bad behavior. Ideally you want these set
 a bit below your system limits.
2019-03-29 15:39:01 -05:00
Matthew Jaffee
2d28f965ea
Merge pull request #1918 from jaffee/import-value-overwrite-bug
importValue should only consider the last instance of a column id
2019-03-29 14:22:58 -05:00
Matt Jaffee
207b39717b
test both importValue write paths and fix bug
fix large write path—there was a bug because we were iterating backwards over
the small write path to fix that bug, but the large write path needs to iterate
forward. There is enough code difference between the two paths that they are now
two separate methods (which are probably easier to read).
2019-03-29 14:11:06 -05:00
Matt Jaffee
cde954e12f
importValue only considers the last instance of a column id
included test demonstrates bug
2019-03-29 13:37:22 -05:00
seebs
80930de295
Merge pull request #1916 from seebs/seebs/btree
improve btree performance a bit, add some testing for it.
2019-03-29 12:08:51 -05:00
Seebs
3b2745e47a inline cmp
Since we always use the same cmp function, we don't need to
actually *call* a function -- we can just inline it. Or, in
fact, omit the computation entirely; comparing the result of
the subtraction to zero is (very slightly) more expensive than
comparing the magnitudes of two numbers.

Also fix a spurious comment and gofmt issues.
2019-03-28 15:42:27 -05:00
Seebs
8fb8bb3609 add btree tests
The upstream btree code has a test file, this is an import
of that test file, adjusted/adapted to make it work with our
de-genericized uint64/*Container implementation, so we have some
tests and benchmarks available for the btree implementation itself.
2019-03-28 15:42:00 -05:00
Seebs
aab42e97a4 tune b+tree values
Did some benchmarking with b+tree values. The actual interactions
appear to be slightly inconsistent; some values seem to help more
in cases with higher OpN in benchmarks, others with lower OpN. It
appears that the practical consideration may be what happens
when a snapshot gets triggered; smaller kx/kd appear to reduce
costs there, but increase costs between snapshots. This is a
bit of guesswork.

Numbers are slighly under powers of 2, because that means that the
total actual sizes of k and d end up fitting nicely in alloc
pool sizes.
2019-03-28 15:42:00 -05:00
Matthew Jaffee
71e7f62909
Merge pull request #1917 from jaffee/perf-regression
fix importRoaring perf regression [no changelog]
2019-03-28 15:35:08 -05:00
Matt Jaffee
1aafd95adc
make arg naming consistent 2019-03-28 15:11:08 -05:00
Matt Jaffee
c651ff9299
use BTree bitmap in importRoaring
sliceContainers very slow to union into
2019-03-28 13:49:01 -05:00
Matt Jaffee
77a0b6b353
add pathological import benchmark 2019-03-28 13:49:00 -05:00
Matthew Jaffee
5ee49904b5
Merge pull request #1915 from jaffee/benchmarking-tweaks
run fewer concurrency level benchmarks, add bench Makefile target
2019-03-28 12:03:29 -05:00
Matt Jaffee
e9db8eb2c2
run fewer concurrency level benchmarks, add bench Makefile target
The benchmarks take an absurdly long time to run, and I think these are the
largest offenders. Dropping to two concurrency cases 2 and 16 should give a
pretty good idea.
2019-03-27 13:32:56 -05:00
seebs
4955dff22f
Merge pull request #1859 from seebs/seebs/serverinfo
add server stats to /info endpoint
2019-03-26 11:10:37 -05:00
Seebs
5ee87bbf7c add server stats to /info endpoint
report the approximate hardware specs (CPU speed, cores, memory)
of the server in the /info endpoint. This may be useful when
benchmarking.

We do some workarounds because gopsutil's core count output is
confusingly different between Linux and Darwin, and the MHz output
is usually wrong on Linux. Intel's app notes say to just parse
the model string. Whyyyyyyy.
2019-03-26 09:14:51 -05:00
Matthew Jaffee
5e0413eac1
Merge pull request #1911 from jaffee/importValue-data-race
test concurrent value imports, fix race
2019-03-25 16:23:17 -05:00
Matt Jaffee
714f89c65c
simplify locking in importValue
may be a slight perf cost, but the simplicity is well worth it
2019-03-25 14:27:05 -05:00
Matt Jaffee
4420d72196
test concurrent value imports, fix race 2019-03-25 14:25:22 -05:00
Matthew Jaffee
9fda9cf6a3
Merge pull request #1910 from jaffee/profiling-stuff
implement config options for block profile rate and mutex fraction
2019-03-25 14:24:36 -05:00
Cody Soyland
52062c0a27
linkify SetMutexProfileFraction in docs
Co-Authored-By: jaffee <matthew.jaffee@gmail.com>
2019-03-25 13:45:43 -05:00
Cody Soyland
54a6e0ef84
linkify SetBlockProfileRate in docs
Co-Authored-By: jaffee <matthew.jaffee@gmail.com>
2019-03-25 13:45:28 -05:00
Matt Jaffee
9f4a9421bc
fix missing quote in toml tag. unclear how test could pass without it 2019-03-25 12:16:24 -05:00
Matt Jaffee
599b2f4a9e
implement config options for block profile rate and mutex fraction
set sane defaults. The performance overhead seems to be negligible, and this will allow us to obtain mutex and blocking profiles from running Pilosas by default.
2019-03-25 11:38:01 -05:00
Matthew Jaffee
b031b45cbe
Merge pull request #1906 from jaffee/1905-close-files
implement global open file counter using syswrap
2019-03-25 09:53:38 -05:00
Matt Jaffee
53dfa9b7f2
remove rename of columnIDs and add comment 2019-03-23 14:52:16 -05:00
Matt Jaffee
e7f65cf7be
implement global open file counter using syswrap
close files after using them if global max is passed.

I originally implemented this without the global count—just always closing files
when done with them, and reopening for new writes. This was crazy slow for that
one test that uses mustSetBits in a big loop. I modified the test to use
importRoaring and everything worked better (though much more slowly).

After adding the global counter, I ran the tests with that one test using
mustSetBits again, and the performance was similar to master. After completing
this PR, I ran the tests with the max limit set to 5—they still passed but were
much slower.
2019-03-23 14:52:16 -05:00
Cody Soyland
b24bc8bb4b
Merge pull request #1909 from codysoyland/golang-1.12
Add Go 1.12 to CircleCI
2019-03-22 20:30:15 -05:00
Cody Soyland
3096202980 Make workflow require Go 1.12, not Go 1.11 2019-03-22 17:20:08 -05:00
Cody Soyland
38af019113 Default to Go 1.12 2019-03-22 17:06:17 -05:00
Cody Soyland
20137986e5 Add Go 1.12 to CircleCI 2019-03-22 16:59:20 -05:00
seebs
0678c539a1
Merge pull request #1901 from seebs/seebs/smallc
make Containers smaller, especially when they have small contents
2019-03-22 16:56:44 -05:00
Seebs
35593f99df move comment to right place 2019-03-22 16:31:29 -05:00
Seebs
bdbd9c1f47 add missing BCE slices in intersection 2019-03-22 16:31:29 -05:00
Seebs
cd81a9a33f hint to the bounds checker for bitmapRepair
You might wonder why `i <= bitmapN-4`. Answer: The compiler isn't
smart enough for the stride analysis to figure out that `i <= bitmapN`
actually guarantees that. If you set the limit to something not a
multiple of stride, though, it can't figure out *anything* about
things. But for some reason, `i < bitmapN-3` fails badly (it
actually adds bounds checks not present with `i < bitmapN`), but
`i <= bitmapN - 4` works.

This reduces runtime of bitmapRepair by about 14%.
2019-03-22 16:31:29 -05:00
Seebs
8475b97d87 set cap more carefully on unsafe slices
Treating a pointer as a pointer to a large array of bytes,
or converting back the other way, isn't totally insane, but
it does create slices with an extremely large cap. This bit
me while I was trying to build the 16-byte packed Container
structure, but it's probably actually worth fixing in general.
2019-03-22 16:31:29 -05:00