68d9ed942bUpdate to WiredTiger 1.6.6
Gregory Burd
2013-11-18 20:54:59 -0500
36faa4e713Forgot to remove second use of checkpoint setting.
Gregory Burd
2013-11-18 20:50:26 -0500
e560185420When logging enable checkpoints, even when using LSM.
Gregory Burd
2013-11-18 20:46:22 -0500
448c0b555cUpdate config to match latest available options.
Gregory Burd
2013-10-30 15:00:41 -0400
634bcd188aIntegrate new configuration options available in WiredTiger.
Gregory Burd
2013-10-30 14:50:14 -0400
1664fdcf8cAPI for handlers in WiredTiger changed to include session state, update our use of the API to match that change.
Gregory Burd
2013-10-30 13:11:14 -0400
7d0ad2dce1Update the version strings and a few config values which changed names.
Gregory Burd
2013-10-02 14:42:26 -0400
84a85bbe38Open a *statistics* cursor when gathering statistics.
Gregory Burd
2013-10-02 14:41:36 -0400
9d2896016bA few build automation changes/fixes.
Gregory Burd
2013-10-02 14:41:06 -0400
17585a99b1priv now has the schema file in it, so be more specific with what we ignore in that dir
Gregory Burd
2013-10-02 14:38:41 -0400
942e51b753OS/X uses ".dylib" rather than ".so" for shared libraries (because it's special) so I've worked around that. Also tightened up some tests so that we're not rebuilding the libraries when not necessary.
Gregory Burd
2013-09-06 09:54:55 -0400
c60fa22422Retry three times, then bail out and return not found.
Gregory Burd
2013-09-04 13:11:02 -0400
08acdbefc8Retry three times, then bail out and return not found.
gsb-rcu
Gregory Burd
2013-09-04 13:11:02 -0400
033661875eTrace line numbers within macros.
Gregory Burd
2013-09-04 13:10:16 -0400
9496f99019WIP: race condition on close causes double-free
Gregory Burd
2013-09-04 13:09:17 -0400
f4a1126fdeFix a few mistakes from the merge.
Gregory Burd
2013-08-26 13:07:46 -0400
48419ce4d0Start the penalty after queues are 25% full because a) that makes sense, and b) that avoids some odd badarith errors when PctBusy is very small.
Gregory Burd
2013-08-21 14:19:52 -0400
2ddf0da53eUse malloc/free rather than enif_alloc/enif_free so as to avoid BEAM allocator overhead (bytes and time). Create static references to commonly used Erlang atoms to avoid overhead re-creating them on each request cycle.
Gregory Burd
2013-08-21 12:20:19 -0400
83c3faf74fUse malloc/free rather than enif_alloc/enif_free so as to avoid BEAM allocator overhead (bytes and time).
Gregory Burd
2013-08-21 12:18:24 -0400
2043e8ccc6Because the build decends into the ext/compressors/snappy directory the relative paths won't find system/include, so use the absolute paths instead.
Gregory Burd
2013-08-21 12:17:18 -0400
33c8e53ccfUpdate to latest release of WiredTiger. Also, make sure Snappy builds before WiredTiger.
Gregory Burd
2013-08-21 12:16:24 -0400
1bf66ae960Every enqueued request now includes a hint as to how much work is pending in the lower C-code. We use that to scale the reduction count penalty so that we can (hopefully) signal to the Erlang scheduler enough information for it to properly throttle work. 'eagain' should only happen when queues are full, we have no choice but to keep this calling proc busy in a recursive loop trying the request over and over if we're going to preserve request ordering.
Gregory Burd
2013-08-21 12:15:34 -0400
e67da86a9bChange backpressure method from EAGAIN to bump_reductions so as not to block Riak/KV vnode processes when queues backup.
Gregory Burd
2013-08-19 13:32:58 -0400
2047104cdaRemove the sleep from async_nif's EAGAIN path because it doesn't seem to have a positive effect.
Gregory Burd
2013-08-19 12:20:36 -0400
a984a6dae0Adding a small patch to URCU build process.
Gregory Burd
2013-08-13 08:54:22 -0400
96d43d5d17Re-use the unchanging value of 'Args' rather than including it in every recursive call.
Gregory Burd
2013-08-02 14:18:19 -0400
ef3bc102f2Replace all enif implementations of mutexes and conditions with their POSIX pthread equivalent on the theory that we don't want to be bumping heads with the Erlang runtime.
gsb-less-enif-more-posix
Gregory Burd
2013-08-02 14:20:04 -0400
e9b1a9ea0bReplace all enif implementations of mutexes and conditions with their POSIX pthread equivalent on the theory that we don't want to be bumping heads with the Erlang runtime.
Gregory Burd
2013-08-02 14:19:44 -0400
6919515de5Re-use the unchanging value of 'Args' rather than including it in every recursive call.
Gregory Burd
2013-08-02 14:18:19 -0400
05c8c615efI think the make_ref() needs to be within the fun()'s context to trigger selective receive optimization in the beam's runtime.
Gregory Burd
2013-08-01 10:02:21 -0400
f153509409With some input from Jon I've managed to reduce this back into a macro rather than a fun and a macro calling a fun. He also suggested that on eagain I sleep a small amount of time so as to allow other work to catch up a bit.
Gregory Burd
2013-07-31 15:39:55 -0400
ee904b4769Lower the queue size to shrink potential for latency in queue. Remove earlier idea that more queues would lead to more even worker progress, just have 1 queue per Erlang-scheduler thread (generally, 1 per CPU core available). Also change the way worker threads decide when to cond_wait or migrate to other queues looking for work.
Gregory Burd
2013-07-31 15:06:28 -0400
c9a4ab8325Revert changes to async_nif and re-enable stats. Fixed selective recv.
Gregory Burd
2013-07-31 09:41:36 -0400
211ffd884cIgnore requests for stats for right now.
Gregory Burd
2013-07-30 14:30:04 -0400
4418a74183Increase the number of queues for work to reside. Worker threads, once started, don't exit until shutdown.
Gregory Burd
2013-07-30 14:21:26 -0400
1623d5293cIncrease the max queue size.
Gregory Burd
2013-07-30 13:30:43 -0400
56c2ac27c2Revert to a macro-only, non-recursive on eagain method for managing requests.
Gregory Burd
2013-07-30 13:27:13 -0400
27dba903efThe ref needs to be in-scope of the recieve for it to be optimized.
Gregory Burd
2013-07-30 13:20:49 -0400
45037cbccaSelective receive requires that the ref is created in the scope of the receive.
Gregory Burd
2013-07-30 12:53:33 -0400
e9f9d13e47WIP: replaced all locked queues in async_nif with lock-free RCU queues, compiles but SEGVs.
Gregory Burd
2013-07-28 20:16:52 -0400
866b2a2ed1Add the User-Space RCU library.
Gregory Burd
2013-07-27 08:21:40 -0400
452d7694a6Added some sanity checking of key/value sizes. Check for EAGAIN/INVAL/NOMEM when starting worker threads. Switch back to the 1.6.3 release branch of WT.
Gregory Burd
2013-07-26 10:27:21 -0400
3627ff8690Ensure that on EAGAIN we continue to try to spawn a worker. When workers finish with a queue have them migrate to the other queues looking for work.
Gregory Burd
2013-07-25 13:29:16 -0400
122963133aSeems logging isn't a valid config value anymore, so remove it.
Gregory Burd
2013-07-18 13:26:53 -0400
2a847b82d0Forgot to remove this when I dumped the MRU.
Gregory Burd
2013-07-18 13:21:22 -0400
2694cc1dbaRemove the MRU, it wasn't really effective in most cases anyway and complicated logic (and was buggy). For now the cache mutex will be hot, but eventually I hope to move the cache to a lock-free dequeue. khash.h and cas.h aren't used anymore, so they have been removed.
Gregory Burd
2013-07-18 13:14:54 -0400
bbadc81d53Queue depth and num workers can race, so make sure that we start at least one worker when there are none active for that queue.
Gregory Burd
2013-07-15 16:51:08 -0400
c3d3d39c36Remove default setting from configuration.
Gregory Burd
2013-07-15 12:36:28 -0400
bd0323af7aUpdate to WiredTiger 1.6.3. Fix a condition where a mutex was unlocked twice on eagain when queues were all full.
Gregory Burd
2013-07-15 12:21:10 -0400
420b658e27Really fix the lower bound for session handles (session_max) to 1024 (upper bound is 8192).
Gregory Burd
2013-07-08 19:59:00 -0400
fea52c4ec3Change lower bound for session handles (session_max) to 1024 (upper bound is 8192).
Gregory Burd
2013-07-08 19:45:45 -0400
ac835f7617Reduce precision of bloom filters to something more reasonable to avoid having very large bloom filters in cache. Reduce leaf pages to a more reasonable default. Given all data in Riak is <<Bucket, Key>> enable prefix_compression to hopefully reduce key overhead.
Gregory Burd
2013-07-08 13:49:44 -0400
aedb91aca5WIP: integrated AO but not quite right yet.
Gregory Burd
2013-07-08 13:34:42 -0400
565f95f9b5Cleanup makefile a bit
Gregory Burd
2013-07-08 11:12:50 -0400
bc0f5dbfc7Evict older half of items in the cache by removing items from the end of the list, don't waste cycles computing timestamps.
gsb-ctx-cache
Gregory Burd
2013-07-02 22:23:32 -0400
2672bab3eaStats overhead due to hitting the clock and pulling a mutex caused a massive slowdown so now work is assigned to a new queue only when the candidate queue is deeper than the average of the other queues and threads are created only when the depth of the queue is larger than the number of threads working on that queue.
Gregory Burd
2013-07-02 19:58:00 -0400
4300b3036fWorking on triggers that start/stop worker threads.
Gregory Burd
2013-07-01 21:09:21 -0400
c7b45a7c2bStill ironing out stats.
Gregory Burd
2013-06-27 10:57:41 -0400
c41e411a92Worker threads come and go as needed with a lower bound of 2 and an upper bound of ASYNC_NIF_MAX_WORKERS. Stats were improved to use thread local storage for measures. With stats working again wterl uses them to determine who to evict. Wterl's signature calculation for an operation wasn't correct and so the cache wasn't efficient at all, this has been fixed.
Gregory Burd
2013-06-25 13:31:43 -0400
a3c54b1610Cleanup a bit.
Gregory Burd
2013-06-19 14:54:27 -0400
4460434db1WIP: remove potential for infinite loops with CAS and fix a few issues in async
Gregory Burd
2013-06-12 08:09:51 -0400
110b482962Some paranoia and a few fixes
Gregory Burd
2013-06-11 12:13:06 -0400
8ea866bf20Logic inversion on CAS() operation.
Gregory Burd
2013-06-10 16:18:55 -0400
2a4b8ee7d2WIP: simplify the cache from hash-of-lists to list; use a CAS() operation to protect the most-recently-used (mru) list.
Gregory Burd
2013-06-10 14:31:59 -0400
0fef28de92WIP: basho_bench tests are running fine now, need more work to ensure cache is functioning properly.
Gregory Burd
2013-06-05 11:41:41 -0400
778ba20352WIP: a bit of cleanup fixes a few mistakes
Gregory Burd
2013-06-04 17:21:50 -0400
f1b7d8322dWIP: replcae the kbtree with khash, we don't need the tree features (yet, if ever) and hash is faster; add a most-recently-used stash for contexts as it's highly likely that worker threads will do many operations with the same shape/signature of session/cursors/tables/config and that path can be lock-free as well making it much faster (one would hope); somewhere something is stepping on read-only ErlNifBinary data and so a crc check is failing and causing the runtime to abort, that's the latest item to find/fix.
Gregory Burd
2013-06-04 14:45:23 -0400
b002294c4eWIP: all tests (but drop) passing again, need to fix that and valgrind next.
Gregory Burd
2013-05-31 20:32:02 -0400
9468870e1fWIP: use a log2 histogram to track how long items live in the cache, evict items which have been in cache greater than the mean time.
Gregory Burd
2013-05-30 17:10:51 -0400
15fbc71ea7WIP: pieces in place, need to work out the kinks now.
Gregory Burd
2013-05-30 14:21:34 -0400