Martin Sumner
eb90541a85
Add a small cache to SST file
...
so that a HEAD which folllows a HEAD (e.g. when a GET follows a HEAD) has a chance of avoiding the binary_to_term CPU load
2017-11-28 14:56:40 +00:00
Martin Sumner
7c4e1a5ad9
Typo
2017-11-28 11:49:50 +00:00
Martin Sumner
a655baf881
Resolve R16 dialyzer issue
2017-11-28 11:49:29 +00:00
Martin Sumner
5342e3a94f
Improve testing of bloom feature
...
In particular will blooms re-appear following startup
2017-11-28 11:43:46 +00:00
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
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
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
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
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
f55cbbeac3
OTP 19 requires defaults in dialyzer
2017-11-13 14:02:39 +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
53afd70174
Remove unnecessary logs
2017-11-09 11:17:50 +00:00
Martin Sumner
15a74fac5c
Remove debug logs
2017-11-08 21:03:04 +00:00
Martin Sumner
4c05dc79f9
Merge branch 'master' into mas-aae-segementfoldplus
2017-11-08 18:38:49 +00:00
Martin Sumner
7de4dccbd9
Extend journal compaction test
...
to cover with and without waste retention. Also makes sure that CDB files in a restarted store will respect the wast retention period set.
2017-11-08 16:18:48 +00:00
Martin Sumner
1d2effc773
Improve docs and specs
...
Focus on leveled_cdb
2017-11-08 15:09:23 +00:00
Martin Sumner
22e894c928
Allow waste retnetion to be ignored
...
If wast retention period is undefined, then it should be ignored - and no waste retained (rather than retaining waste for 24 hours as at present).
This wasn't working anyway - as reopen reader didn't get the cdb options (which didn't have the waste path on anyway) - so waste would not eb retained if the file had been opened after a stop/start.
2017-11-08 12:58:09 +00:00
Martin Sumner
e8bd712fb8
Tidy up test shutdown
2017-11-08 11:20:22 +00:00
Martin Sumner
5cee3a8e4e
Tidy up spec
...
Also remove _app _sup originally added for dialyzer (due to false understanding they were needed for dialyzer)
2017-11-07 19:41:39 +00:00
Martin Sumner
bb15c1f780
Take out OTP files
...
Were only there for show
2017-11-07 16:22:49 +00:00
Martin Sumner
bea094aaf5
no non-binary objects in inker
2017-11-07 13:43:29 +00:00