Commit graph

1004 commits

Author SHA1 Message Date
Martin Sumner
c2f19d8825 Switch to using bloom at penciller
Previouslythe tinybloom was used within the SST file as an extra check to remove false fetches.

However the SST already has a low FPR check in the slot_index.  If the newebloom was used (which is no longer per slot, but per sst), this can be shared with the penciller and then the penciller could use it and avoid the message pass.

the message pass may be blocked by a 2i query or a slot fetch request for a merge.  So this should make performance within the Penciller snappier.

This is as a result of taking sst_timings within a volume test - where there was an average of + 100microsecs for each level that was dropped down.  Given the bloom/slot checks were < 20 microsecs - there seems to be some further delay.

The bloom is a binary of > 64 bytes - so passing it around should not require a copy.
2017-11-28 01:19:30 +00:00
Martin Sumner
467ad50cd1 Settle on hash approach 2017-11-27 15:29:01 +00:00
Martin Sumner
6b222ea8f9 Revert "Revert "Switch to 32 slots""
This reverts commit 99dad0c86f.
2017-11-27 15:17:40 +00:00
Martin Sumner
99dad0c86f Revert "Switch to 32 slots"
This reverts commit 7af6a3ba00.
2017-11-27 15:16:18 +00:00
Martin Sumner
7af6a3ba00 Switch to 32 slots 2017-11-27 15:16:10 +00:00
Martin Sumner
5e6541dddb Revert "Revert "Half size of each slot's bloom""
This reverts commit d37c5eab3f.
2017-11-27 14:51:25 +00:00
Martin Sumner
34dc63a8f8 Change measurement 2017-11-27 14:51:03 +00:00
Martin Sumner
d37c5eab3f Revert "Half size of each slot's bloom"
This reverts commit d83eea7c60.
2017-11-27 14:49:43 +00:00
Martin Sumner
d83eea7c60 Half size of each slot's bloom 2017-11-27 14:48:51 +00:00
Martin Sumner
c65dfa31d8 Add alternative bloom
Bloom filter that can take largere keys but is still efficient to build.  Allows bloom filter to be checked without first detemrining the slot.  Also, as represents the whole SST - it could be sent to the penciller to remove the need for a message pass.

The bloom is smaller and has a worse fpr than leveled_tinybloom.  Failing the bloom check isn't so bad - due to the slot index check being relatively fast and having a very low fpr.
2017-11-24 11:38:58 +00:00
Martin Sumner
0e51627539
Merge pull request #113 from martinsumner/mas-i111-ssttimings
Mas i111 ssttimings
2017-11-22 07:44:30 +00:00
Martin Sumner
f436cfd03e Add consistent timing points
Now all timing points should be made in a consistent fashion
2017-11-21 23:13:24 +00:00
Martin Sumner
3ef550d9f8 Refactor timing point management
For Penciller and timing head requests.
2017-11-21 19:58:36 +00:00
Martin Sumner
58946a7f98 Amend SST Timing Capture
Use sampling mechansm from CDB timing capture.  Do it less though - as far more SST fetches in comparison to CDB fetches.
2017-11-21 17:00:23 +00:00
Martin Sumner
f5f907fe36
Merge pull request #110 from martinsumner/mas-i108-cdbtimings
Mas i108 cdbtimings
2017-11-21 10:00:41 +00:00
Martin Sumner
495f6c3fd9 Re-introduce missing shortcut
Can't discover missing keys sooner by reporting missing on a zero hash.
2017-11-20 20:31:13 +00:00
Martin Sumner
52c7a023a1 Stop using list
Producing the list of all slots to try appeared to be expensive.  In volume tests taking 150 - 250 microseconds per GET.  Perhaps the list could be long (>1000), with a split and append, so not surprising.

Instead loop and count.
2017-11-20 20:01:21 +00:00
Martin Sumner
06f6604ac4 Always return passed in timings 2017-11-20 18:29:55 +00:00
Martin Sumner
5b4bc1ce59 Merge branch 'master' into mas-i108-cdbtimings 2017-11-20 17:34:50 +00:00
Martin Sumner
215c226e44
Merge pull request #109 from martinsumner/mas-i107-foldobjects2d
Mas i107 foldobjects2d
2017-11-20 17:32:10 +00:00
Martin Sumner
51f504fec5 Add extra slow_fetch test
sometimes ct tests don’t hit this - surprisingly
2017-11-20 17:29:57 +00:00
Martin Sumner
464baaa252 no_timing on key_check
reader was out of step with delete_pending state
2017-11-20 16:36:26 +00:00
Martin Sumner
faa5ef82aa Test logging of samples
To prompt the log the journal size needs to be reduced
2017-11-20 15:31:31 +00:00
Martin Sumner
de60a55be2 Add missing logref 2017-11-20 15:19:30 +00:00
Martin Sumner
fe0fc21461 Fix R16 dialzyer errors 2017-11-20 15:14:02 +00:00
Martin Sumner
8a43539090 Take sample timings from CDB files
Periodically get a CDB file process to take samples of how long fetching keys/values takes - and record  those samples
2017-11-20 14:58:43 +00:00
Martin Sumner
62a84b95bb Add fadvise help to scan 2017-11-20 10:40:09 +00:00
Martin Sumner
d5babe0c29 Expand tests for coverage
Prove tests handle SQN over batch, and also can handle mismatched tags in the store.
2017-11-20 10:21:30 +00:00
Martin Sumner
0e071d078e fold_objects in SQN order
This adds a test that fold_objects works in SQN order
2017-11-17 18:30:51 +00:00
Martin Sumner
50c81d0626 Make ink fold more generic
Also makes the fold_from_sequence loop much easier to follow
2017-11-17 14:54:53 +00:00
Martin Sumner
39ad5c9680 Make inker fold generic
ink_loadpcl is in effect an inker fold - so abstract out the inker fold part to make this a generic capability
2017-11-15 16:08:24 +00:00
Martin Sumner
9892d26e60
Merge pull request #105 from martinsumner/mas-otp19-dialyzer
Mas otp19 dialyzer
2017-11-13 20:34:28 +00:00
Martin Sumner
3f6cb28365 Strange issue with High Sierra
Since High Sierra upgrade having a seperate line for platform_define 17 caused issues.

OTP 19 seemingly matched against it.  OTP 18 had a redefine issue as it appeared to match against it as well.

Using this regex instead seems to work.  Why? Why was htis not an issue before High Sierra?
2017-11-13 18:58:50 +00:00
Martin Sumner
a4186424ea Support for OTP 17 causes issues
Like it seems to think other versions are also 17??
2017-11-13 14:42:23 +00:00
Martin Sumner
f55cbbeac3 OTP 19 requires defaults in dialyzer 2017-11-13 14:02:39 +00:00
Martin Sumner
d866d7b5dc
Merge pull request #104 from martinsumner/mas-i103-coverage
Mas i103 coverage
2017-11-13 10:31:28 +00:00
Martin Sumner
0208cde803 Drop sample size
Scoring is relatively inaccurate - doesn't seem necessary to test sucha  bing sample, especially as eveyr file needs a score
2017-11-10 14:40:07 +00:00
Martin Sumner
c4456568be Expand testing
Reasoned that the case clause (RHS of []) that was previously uncovered by tests - is so as it is not a possible outcome.

So case clause removed.
2017-11-10 12:56:12 +00:00
Martin Sumner
0c498f293d Test out-of-date update
Check no recent_aae index is created
2017-11-10 10:08:30 +00:00
Martin Sumner
46262e2105 Improve testing of safe reading
Test didn't test happy day scenario correctly - and so bit flipping scenarios couldn't be trusted either.
2017-11-09 20:22:43 +00:00
Martin Sumner
31505c1f5f get_nextkey no longer used
So removed.  Also now, no reason to call read_next_key directly - and all errors all seem to be try/caught.
2017-11-09 19:28:38 +00:00
Martin Sumner
ae70af5eec Add unit test to hit safe read edge cases
... and they can't be hit.  So remove branches and let them fail if something unexplicable happens
2017-11-09 17:12:47 +00:00
Martin Sumner
69f7e4c12a Add doc statement 2017-11-09 12:48:48 +00:00
Martin Sumner
ee47d62c24 iclerk testing
Not sure if this scenario is unlikely or impossible - but filtering it seems harmless.

Abstracting out function makes testing of scoring scenarios a bit easier.

Catch-up on setting specs for external functions in the iclerk.
2017-11-09 12:42:49 +00:00
Martin Sumner
29ffb74a5b Add coverage for CDB delete_pending with snapshot
CDB file in delete_pending state, and times out but the Inker has a snapshot open - and so the file is not deleted.
2017-11-09 12:02:03 +00:00
Martin Sumner
53afd70174 Remove unnecessary logs 2017-11-09 11:17:50 +00:00
Martin Sumner
d3ad3225dd
Merge pull request #102 from martinsumner/mas-remove-lock
Remove rebar.lock
2017-11-08 21:10:46 +00:00
Martin Sumner
5d91ce8ecf Remove rebar.lock 2017-11-08 21:10:12 +00:00
Martin Sumner
60e1868150
Merge pull request #101 from martinsumner/mas-aae-segementfoldplus
Mas aae segementfoldplus
2017-11-08 21:07:15 +00:00
Martin Sumner
15a74fac5c Remove debug logs 2017-11-08 21:03:04 +00:00