Samy Al Bahra
dbfe282866
regressions/ck_epoch: fix other record read-reclaim races.
6 years ago
Samy Al Bahra
1cb2e6b281
regressions/ck_epoch_section_2: improve logging of failure conditions.
...
Certain environments don't provide us core dumps to work with,
unfortunately.
6 years ago
Samy Al Bahra
ffe9cbf9ca
ck_epoch: ck_epoch_end returns true if forward progress has been made.
8 years ago
Samy Al Bahra
8391338299
regressions/ck_epoch: fix up message.
8 years ago
Samy Al Bahra
cce21287fe
ck_epoch_call: basic coverage for call_strict.
8 years ago
Samy Al Bahra
8580ccc580
ck_epoch: introduce synchronize_wait that allows blocking synchronize operation.
8 years ago
Samy Al Bahra
8c12481577
regressions/ck_epoch: n_dispatch is now unsigned int.
8 years ago
Samy Al Bahra
77fc933229
regressions/epoch/torture: include synchronize latency.
8 years ago
Samy Al Bahra
24d26965d1
regressions/ck_epoch_section_2: Force exit after timer.
8 years ago
Samy Al Bahra
03bd7a4158
regressions/ck_epoch: Change formatting.
9 years ago
Samy Al Bahra
ece3a24a4f
regressions/ck_epoch: Switch to heap allocated records for torture test.
9 years ago
Samy Al Bahra
5b64342668
regressions/ck_epoch: Remove counter dependencies from torture parity test.
9 years ago
Samy Al Bahra
f22f921576
regressions/ck_epoch_section_2: Switch to heap allocated records.
9 years ago
Samy Al Bahra
5999d8a243
regressions/ck_epoch: Shorten stack walk length for ck_epoch_synchronize.
...
This test was taking excessively long (read: hours) on some targets.
9 years ago
Samy Al Bahra
3a3562b96c
regressions/epoch: Add new torture test.
...
Verified with fault injection into ck_epoch_synchronize.
9 years ago
Samy Al Bahra
c845efcb0a
regressions/epoch: Various clean-up including fixes for Windows.
9 years ago
Samy Al Bahra
968b56598b
regressions/epoch: Additional coverage for epoch sections.
9 years ago
Samy Al Bahra
2e75aefc4a
ck_epoch: Allow for forward progress in concurrent epoch sections.
...
This work is derived directly from the work of John Esmet and Paul
Khuong ({jesmet,pkhuong}@appnexus.com) and PR34.
9 years ago
Samy Al Bahra
0d6d384f3f
ck_epoch: Cache associated epoch state machine in record.
...
This ends up removing arguments (and vector for error) for several
functions on the common path of ck_epoch.
9 years ago
Samy Al Bahra
0dfd145aa6
whitespace: Update Copyright messages.
10 years ago
Samy Al Bahra
ea567fc58a
regressions/ck_epoch: Additional -Wcast-qual clean-up.
10 years ago
Samy Al Bahra
959e5fd744
regressions/ck_epoch: -Wcast-qual clean-up.
10 years ago
Samy Al Bahra
6ecd734757
ck_epoch: Remove unnecessary keyword.
10 years ago
Samy Al Bahra
b3f374cb55
ck_epoch: Allow for deferral from callbacks.
...
This makes things much easier in cases where deferral is mixed
with other reclamation mechanisms such as reference counters.
10 years ago
Samy Al Bahra
c197b37df1
legal: Update Copyright statements.
11 years ago
Samy Al Bahra
4132ec4998
ck_epoch: Add ck_epoch_reclaim function.
...
This function allows for explicit execution of all
deferred callbacks in an epoch_record. The primary
motivation is currently for performance profiling
but there are other use-cases where best-effort
semantics could be applied.
12 years ago
David Joseph
7b94d7c13d
regressions: Make clean and gettimeofday fixes.
12 years ago
David Joseph
a4cd7f2ef2
Revert "regressions: Remove exes with make clean."
...
This reverts commit 9d37e38580
.
12 years ago
David Joseph
9d37e38580
regressions: Remove exes with make clean.
12 years ago
Samy Al Bahra
33a9222923
legal: Update Copyright statements.
12 years ago
Samy Al Bahra
5c93ee3add
regressions: Do not use ck_error for debug output.
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
ac50efbeaf
regressions/ck_epoch: GCC 4.6.3 ignores used attribute in this case.
12 years ago
Samy Al Bahra
ddfdda3649
regressions/ck_epoch: Force generation of stack dereference in ck_epoch_synchronize.
12 years ago
Samy Al Bahra
099f13a24d
regressions/ck_epoch: Force generation of stack pointer.
12 years ago
Samy Al Bahra
ee2ae5a50f
regressions/ck_epoch: Update check target.
...
Makefile was ignored due to bogus gitignore entry.
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
375a9eb816
regressions/ck_epoch: Drop debug flags.
12 years ago
Samy Al Bahra
657c50f823
regressions/ck_epoch: Multiple writers for synchronize unit test.
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
57104fcde7
ck_epoch: Change to epoch semantics, bump grace period to 4.
12 years ago
Samy Al Bahra
ce7278140c
regressions/ck_epoch: Add missing header files.
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
290add2e50
build/regressions: Add CORES option, add "check" target.
...
The check target will attempt to run the unit tests with some
sane defaults.
12 years ago
Samy Al Bahra
3cf265cba0
all: Strip trailing whitespaces.
13 years ago
Samy Al Bahra
706fd07de7
legal: Update Copyright statements.
13 years ago
Samy Al Bahra
eae4a518a8
ck_epoch: Differentiate read/write epoch endings.
...
ck_epoch_end is deprecated. Please use ck_epoch_read_end
and ck_epoch_write_end instead.
13 years ago
Samy Al Bahra
0d8faa5cd8
ck_epoch: Update unit tests to conform to new API.
13 years ago
Samy Al Bahra
10ffb2e6f1
ck_epoch: Support per-object destructors.
...
This increases epoch per-object overhead to 16 bytes.
13 years ago
Samy Al Bahra
c46bc1f1d7
regressions: Silence some irrelevant compiler warnings.
14 years ago