Samy Al Bahra
adaf20b31c
ck_ht: Add ck_ht_stat function.
...
This can be used to expose certain performance metrics.
12 years ago
Samy Al Bahra
fe41e4082b
build: Update help description.
12 years ago
Samy Al Bahra
a40b724270
regressions/ck_hs: Add Makefile for benchmarks.
12 years ago
Samy Al Bahra
0f5e540afa
ck_hs: Lock-free set loosely modeled after ck_ht.
...
Currently only SPMC, but MPMC transformation is relatively trivial.
Documentation will come in a follow-up commit.
12 years ago
Abel Mathew
ec02b2f356
ck_bag: USE CK_BAG_KEY_LENGTH
12 years ago
Abel Mathew
9ff3c2d017
Merge remote-tracking branch 'upstream/master'
12 years ago
Abel Mathew
981e0a49a2
ck_bag: Use CK_MD_VMA_BITS
12 years ago
Samy Al Bahra
01cd3a0256
build: Drop ck_hs, not ready to merge.
12 years ago
Samy Al Bahra
621642d7b4
doc/ck_ht: Document CK_HT_KEY_LENGTH.
12 years ago
Samy Al Bahra
1d1e433dc4
ck_ht: Set unsigned key length.
12 years ago
Samy Al Bahra
ec0d212c04
ck_ht: Set artificial key length limit if pointer packing is disabled.
12 years ago
Samy Al Bahra
90713046e9
ck_ht: Use CK_MD_VMA_BITS.
...
Documentation update is necessary to point out CK_HT_KEY_LENGTH.
12 years ago
Samy Al Bahra
3c7f94db44
build: Only enable pointer packing if VMA bits is detected.
12 years ago
Samy Al Bahra
7a04c368ff
build: Add VMA bits detection for Mac OS X and Linux on x86*.
12 years ago
Samy Al Bahra
67895cb87e
regressions/ck_epoch: Add support for multiple writers in poll unit test.
12 years ago
Samy Al Bahra
5fad753d6e
ck_epoch: No need for the fence on synchronize for TSO.
...
We still require a CAS on fast path, which acts as serializing.
12 years ago
Samy Al Bahra
c45098b21b
ck_epoch: Emit fence instructions for TSO, do not emit for recursive calls.
...
Unfortunately, there are still workloads which will not
serialize. Recursive calls into ck_epoch_begin have no
need for fence instructions.
12 years ago
Samy Al Bahra
3d3f1c9045
build: Keep ABI counter at 0 at least until we freeze.
12 years ago
Samy Al Bahra
5ab99d5f2e
build: Bump up major version.
12 years ago
Samy Al Bahra
a5fb24ab61
ck_ht: Hard-code ck_ht_entry alignment.
...
Even though there is a re-write in progress, this issue must
be fixed. The CK_CC_ALIGNED attribute was never added.
12 years ago
Samy Al Bahra
375a9eb816
regressions/ck_epoch: Drop debug flags.
12 years ago
Samy Al Bahra
034759c3b9
regressions: Update callers to ck_epoch_call.
12 years ago
Samy Al Bahra
f6a675ab00
ck_cc: Add no-op macros in case of unsupported compiler.
12 years ago
Samy Al Bahra
269cddc04c
doc/ck_epoch: Whitespace changes in synopsis.
12 years ago
Samy Al Bahra
657c50f823
regressions/ck_epoch: Multiple writers for synchronize unit test.
12 years ago
Samy Al Bahra
dac91d1edd
ck_epoch: Short-circuit on scan block if epoch tick is encountered.
12 years ago
Samy Al Bahra
1c4183cf44
ck_epoch: Reload epoch value on scan failure.
12 years ago
Samy Al Bahra
7821be8a60
ck_epoch: If all threads are inactive, then we are at a grace period.
12 years ago
Samy Al Bahra
5293ad2348
regressions/ck_epoch: Reduce number of poll iterations, change peak calculation in synchronize.
12 years ago
Samy Al Bahra
5d013028d9
ck_epoch_poll: Update writer epoch snapshot on poll.
...
If our CAS operation fails, we should grab a snapshot of epoch
for future ck_epoch_call invocations.
12 years ago
Samy Al Bahra
8a9f29a354
ck_epoch: Add comment to clarify short-circuit logic.
12 years ago
Samy Al Bahra
07050dc044
ck_epoch: Short-circuit scan step if epoch was changed from underneath us.
12 years ago
Samy Al Bahra
eec4093cdb
ck_epoch: Goal represents a full epoch generation in barrier.
12 years ago
Samy Al Bahra
81ba687e14
ck_epoch: Add additional scan step, we only need to observe e + 2.
...
This allows us to only wait two rather than three epoch-protected
sections, which is a considerable performance improvement. Thanks
much to Richard Bornat for clarifications and feedback.
12 years ago
Samy Al Bahra
1f89848a51
ck_epoch: Fix typo in comment.
12 years ago
Samy Al Bahra
1296a611fd
ck_epoch: Only need three. Issue I found only exists in literature.
...
I think literature didn't hit this due to their implementation approach.
12 years ago
Samy Al Bahra
0efd4dfe21
ck_epoch: Update comment to reflect my findings.
12 years ago
Samy Al Bahra
57104fcde7
ck_epoch: Change to epoch semantics, bump grace period to 4.
12 years ago
Samy Al Bahra
b145b513de
git: Add missing files to gitignore.
12 years ago
Samy Al Bahra
04d815b29b
doc: Simplify manual page generation, generate ck_bag manuals.
12 years ago
Samy Al Bahra
e434a0518a
doc/ck_ht: Remove remaining references to ck_ht_allocator_set.
12 years ago
Samy Al Bahra
e295fa78ee
doc/ck_ht: Remove reference to non-existent function.
12 years ago
Samy Al Bahra
68a1465536
doc/ck_epoch: Add manual pages.
12 years ago
Samy Al Bahra
ce7278140c
regressions/ck_epoch: Add missing header files.
12 years ago
Samy Al Bahra
770a11bf2a
build: Bump CK version to 0.2.9.
12 years ago
Samy Al Bahra
98d902b024
ck_epoch: Barrier placement for RMO.
12 years ago
Samy Al Bahra
c274e8bc54
ck_epoch: Major redesign and rewrite.
...
I had the pleasure of spending a significant amount of time at the most
recent LPC with Mathieu Desnoyers and Paul McKenney. In discussing
RCU semantics in relation to epoch reclamation, it was argued that
epoch reclamation is a specialisation of RCU (rather than a generalization).
In light of this discussion, I thought it would make more sense to not expose
write-side synchronization semantics aside from ck_epoch_call (similar to
RCU call), ck_epoch_poll (identical to tick), ck_epoch_barrier and
ck_epoch_synchronization (similar to ck_epoch_synchronization). Writers will
now longer have to use write-side epoch sections but can instead rely on
epoch_barrier/synchronization for blocking semantics and ck_epoch_poll
for old tick semantics.
One advantage of this is we can avoid write-side recursion for certain workloads.
Additionally, for infrequent writes, epoch_barrier and epoch_synchronization both
allow for blocking semantics to be used so you don't have to pay the cost of
epoch_entry for non-blocking dispatch.
Example usage:
e = stack_pop(mystack);
ck_epoch_synchronize(...);
free(e);
read_begin and read_end has been replaced with ck_epoch_begin and ck_epoch_end.
If multiple writers need SMR guarantees, then they can also use ck_epoch_begin
and ck_epoch_end. Any dispatch in presence of multiple writers should be done
with-in an epoch section (for now).
There are some follow-up commits to come.
12 years ago
Samy Al Bahra
955047a7d1
ck_{ring,fifo}: Add store fences while we lack load_store fences.
12 years ago
Samy Al Bahra
e78bbe9ae6
ck_{rw,byte,br}lock: Serialize final loads with respect to read.
...
I will switch to a SPARC-style barrier interface.
12 years ago
Samy Al Bahra
86411b9be8
ck_barrier_centralized: Unconditionally execute full barrier.
...
Any side-effects should be visible after barrier boundary
is crossed.
12 years ago