Samy Al Bahra
56bd0b7424
regressions/ck_fifo: cache align MPMC fifo.
12 years ago
Samy Al Bahra
3f0a90813a
ck_ring: Unit test coverage for ck_ring_trydequeue.
12 years ago
Samy Al Bahra
5c93ee3add
regressions: Do not use ck_error for debug output.
12 years ago
Samy Al Bahra
f1be36b6d2
regressions/ck_ring: Fix erroneous usage of ck_error.
12 years ago
Samy Al Bahra
6bd946d019
regressions: Add ck_error convenience function.
...
Prints a message and then executes exit(EXIT_FAILURE).
12 years ago
Samy Al Bahra
90745e4d60
regressions/ck_ring: Silence GCC false positives.
12 years ago
Samy Al Bahra
911909ef31
regressions/ck_ring: Add ck_ring_spmc_template unit test.
12 years ago
Samy Al Bahra
b07c7808ce
regressions/ck_ring: Add strict fence around barrier and cache align ring.
12 years ago
Samy Al Bahra
d705e02b76
ck_ring: Replace MPMC variant with SPMC variant for starters.
...
Immediate use-case is SPMC. Next is MPSC, then I will generalize
to MPMC (unfortunately, I don't have an algorithm that avoids CAS2
yet for MPMC).
12 years ago
Samy Al Bahra
8d90fa28ed
regressions/ck_ring: Add missing header file.
12 years ago
Samy Al Bahra
8d8f76845b
regressions/ck_ring: Add MPMC unit test.
12 years ago
Samy Al Bahra
68e6752e53
ck_ring: Due to popular request, add MPMC variants of enqueue/dequeue.
...
Fencing semantics are heavier-weight than they need to be.
12 years ago
Samy Al Bahra
cb1c72d36b
ck_queue: Add CK_?LIST_MOVE operation.
...
This operation is of format:
CK_S*LIST_MOVE(a, b, linkage) and is equivalent to intializing
a with the contents of b. This is done in a manner that is atomic
with respect to readers. Read-only operations are still valid in
b, but behavior is undefined for write-side operations on b after
a MOVE operation.
12 years ago
Samy Al Bahra
533136627f
regressions/ck_stack: Cache align stack.
13 years ago
Samy Al Bahra
b0277346b8
regressions/ck_bytelock: Cache-align bytelock.
...
Signed-off-by: Samy Al Bahra <sbahra@repnop.org>
13 years ago
Samy Al Bahra
ac50efbeaf
regressions/ck_epoch: GCC 4.6.3 ignores used attribute in this case.
13 years ago
Samy Al Bahra
ddfdda3649
regressions/ck_epoch: Force generation of stack dereference in ck_epoch_synchronize.
13 years ago
Samy Al Bahra
099f13a24d
regressions/ck_epoch: Force generation of stack pointer.
13 years ago
Samy Al Bahra
31040a925d
regressions/ck_ht: Use random get counter.
...
We were erroneously printing reverse get results in serial.
13 years ago
Samy Al Bahra
ee2ae5a50f
regressions/ck_epoch: Update check target.
...
Makefile was ignored due to bogus gitignore entry.
13 years ago
Samy Al Bahra
690782aa67
ck_hs: Add hash function wrapper to maintain opacity of ck_hs_t.
...
This is in the form of CK_HS_HASH(X, Y, Z) which expands to
Y(Z, X.seed).
13 years ago
Samy Al Bahra
43b24d9f28
regressions/ck_hs: Initialize n_state.
13 years ago
Samy Al Bahra
44b845a53a
regressions/ck_hs: Use (char *) for debug output.
13 years ago
Samy Al Bahra
bc7a3e5606
regressions/ck_bag: Add status around sleep.
13 years ago
Samy Al Bahra
ece2895e9e
ck_hs: Drop ck_hs_hash_t abstraction.
...
No need for opaque type anymore.
13 years ago
Samy Al Bahra
adaf20b31c
ck_ht: Add ck_ht_stat function.
...
This can be used to expose certain performance metrics.
13 years ago
Samy Al Bahra
a40b724270
regressions/ck_hs: Add Makefile for benchmarks.
13 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.
13 years ago
Samy Al Bahra
67895cb87e
regressions/ck_epoch: Add support for multiple writers in poll unit test.
13 years ago
Samy Al Bahra
375a9eb816
regressions/ck_epoch: Drop debug flags.
13 years ago
Samy Al Bahra
034759c3b9
regressions: Update callers to ck_epoch_call.
13 years ago
Samy Al Bahra
657c50f823
regressions/ck_epoch: Multiple writers for synchronize unit test.
13 years ago
Samy Al Bahra
5293ad2348
regressions/ck_epoch: Reduce number of poll iterations, change peak calculation in synchronize.
13 years ago
Samy Al Bahra
57104fcde7
ck_epoch: Change to epoch semantics, bump grace period to 4.
13 years ago
Samy Al Bahra
ce7278140c
regressions/ck_epoch: Add missing header files.
13 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.
13 years ago
Samy Al Bahra
b220e50f54
regressions/ck_pr: Disable rest of width checks on bi-endian platforms.
13 years ago
Samy Al Bahra
6961547dfe
regressions/ck_pr: Remove unnecessary assignment in Makefile.
13 years ago
Samy Al Bahra
98660bf560
regressions/ck_pr: Disable width checks on bi-endian architectures.
13 years ago
Samy Al Bahra
7ebbcf55b1
regressions/ck_spinlock: Disable linux_spinlock on unsupported platforms.
13 years ago
Samy Al Bahra
d72ca391f6
ck_bytelock: Switch to RMO model.
13 years ago
Samy Al Bahra
bac1c1d26a
regressions/ck_stack: Disable various TRYMPMC benchmarks on unsupported platforms.
13 years ago
Samy Al Bahra
3e4aa8239a
regressions: Add _GNU_SOURCE to ck_backoff. Don't apply to all.
13 years ago
Samy Al Bahra
f4e50d16d8
regressions: Use _GNU_SOURCE by default on Linux.
13 years ago
Samy Al Bahra
8043f52130
ck_pr: Add ck_pr_barrier for compiler barrier.
...
CK_CC_BARRIER isn't idiomatic, roll this into PR memory model
instead.
13 years ago
Samy Al Bahra
7e9a0d8751
regressions/ck_brlock: Reduce number of iterations.
13 years ago
Samy Al Bahra
f8c19a89b4
regressions/ck_hp: LLVM's optimizer keeps getting the best of us.
...
If I see more regressions in LLVM, I may end up enforcing compiler
barriers in all inlined code.
13 years ago
Samy Al Bahra
f567513f8c
regressions/ck_hp: Add Donner's unit test.
13 years ago
Samy Al Bahra
3f6a3660eb
regressions/ck_stack: Add trypush unit tests to check target.
...
Submitted by Andrew Schorr <aschorr@telemetry-inves....>.
13 years ago
Samy Al Bahra
d454f729e0
regressions/ck_fifo: Add dependency to ck_fifo.h.
13 years ago