Jaidev Sridhar
1f03809acb
ck_swlock: We shouldn't decrement n_readers when
...
ck_swlock_read_latchlocks observers a writer if the unlatch
operation sets n_readers to 0.
The unlatch operation now just unsets the latch bit, we can safely
decrement n_readers in ck_swlock_read_latchlocks().
+ Fixes to validation tests & ELIDE coverage.
11 years ago
Paul Khuong
f06a5c4a71
ck_bitmap: more bulk operations, less space, more tests
...
* new bulk rmw: intersection, intersection_negate (with complement),
* new bulk reads: empty, full, count, count_intersect
* ck_bitmap_iterator fixes: avoid out of bounds read on empty bitmaps,
and ck_bitmap_next is marginally faster on sparse bitmaps .
* less space: the bitmap itself is an array of unsigned int, which
eliminates alignment padding between the n_bit field and the bitmap.
* more unit tests.
11 years ago
Samy Al Bahra
240d30c8c4
regressions/ck_swlock: Fix-up style and Copyright.
11 years ago
Samy Al Bahra
1997acde22
regressions: Remove optimization flags from ck_swlock.
11 years ago
Jaidev Sridhar
9732e2bdb3
ck_swlock: A single writer rwlock.
...
This lock is copy-safe when the latch operations are used.
Simplified write side operations lead to lower latencies than ck_rwlock
for single writer workloads.
11 years ago
Samy Al Bahra
c3097a4a7b
regressions: Remove latchlock coverage.
11 years ago
Samy Al Bahra
2a701163eb
ck_rwlock: Ditch ck_rwlock latch for ck_swlock.
11 years ago
Samy Al Bahra
bf3a3fdeb2
Revert "regressions: Benchmark coverage for latchlock operations."
...
This reverts commit 24d65432e0
.
11 years ago
Samy Al Bahra
24d65432e0
regressions: Benchmark coverage for latchlock operations.
11 years ago
Samy Al Bahra
0878bf489a
regressions/ck_pr: Coverage for immediates.
11 years ago
Samy Al Bahra
7de5da15d7
regressions/ck_tflock: Remove rwlock reference.
11 years ago
Samy Al Bahra
6e0f79c70e
ck_tflock: Initial check-in of reference implementation.
11 years ago
Samy Al Bahra
edd12edbcc
regressions/ck_fifo: Require non-NULL stub node.
11 years ago
Samy Al Bahra
68d5206a03
regressions/ck_hp_fifo: Require non-NULL stub node.
11 years ago
Samy Al Bahra
cbc2206ba0
regressions: Add basic coverage of ck_hp_fifo.
11 years ago
Samy Al Bahra
ca49839883
regressions/ck_fifo: Add coverage for deinit routines.
11 years ago
Samy Al Bahra
190b204059
ck_bitmap: Drop _mpmc suffix and add union operation.
...
The _mpmc suffix is not useful. I see little benefit to specializing
the bitmap to begin with.
11 years ago
Samy Al Bahra
1c8040968f
regressions: Add ck_rhs to top-level Makefile.
11 years ago
Samy Al Bahra
76e43825a7
Merge remote-tracking branch 'origin/cognet'
11 years ago
Samy Al Bahra
79fb6176bb
regressions: Add coverage for ck_bytelock off-by-one.
11 years ago
User Doginou
59cedf10c6
ck_rhs: Add a read mostly mode.
...
Add a read-mostly mode, in which entries won't share cache lines with
associated datas (probes, probe_bound, etc).
This makes write operations slower, but make get faster.
11 years ago
Samy Al Bahra
0a256f0892
regressions: Empty set coverage for ck_hs_gc.
11 years ago
Olivier Houchard
bf686c0a42
ck_rhs: Add.
...
Introduce ck_rhs, a variant of ck_hs that uses the robin hood algorithm for
insertion, and backward shift delete for deletion.
11 years ago
Samy Al Bahra
c197b37df1
legal: Update Copyright statements.
11 years ago
Samy Al Bahra
fb7310b4cb
regressions: Coverage for parametric ring.
11 years ago
Samy Al Bahra
f769f842a4
regressions: Additional coverage for delete mode.
11 years ago
Samy Al Bahra
4e4c24ba63
regressions: Additional ck_hs_gc coverage.
11 years ago
Samy Al Bahra
207884f9e3
regressions: Coverage for ck_ht delete workload hint.
11 years ago
Samy Al Bahra
1ecb37b28f
Merge branch 'cognet' of git.concurrencykit.org:ck
11 years ago
Samy Al Bahra
fdc2061935
regressions/ck_ring: Always treat buffer as opaque.
11 years ago
Samy Al Bahra
f9ae05b15a
regressions/ck_ring: Drop template variants.
11 years ago
Olivier Houchard
2b08211d60
regressions: Mark the core variable as unused, to appease the compiler.
11 years ago
Olivier Houchard
0f92cbab08
ck_spinlock: Commit the missing HCLH bits.
11 years ago
Samy Al Bahra
ce7533e98a
regressions/ck_ht: Use random seed for ck_ht_gc.
11 years ago
Samy Al Bahra
6818335303
regressions/ck_ht: ck_ht_gc coverage.
11 years ago
Olivier Houchard
e5f7639962
ck_spinlock: Add a HCLH implementation.
11 years ago
Olivier Houchard
3edb523da5
ck_ring: Move the ring buffer outside of the ck_ring_t
...
Remove the ring buffer from the struct ck_ring, it is now required to
explicitely pass the ring buffer for enqueue/dequeue. That can be useful for
systems with multiple address spaces.
11 years ago
Olivier Houchard
4c878ff1de
regressions: Implement aff_iterate() for FreeBSD.
11 years ago
Olivier Houchard
b553f42fae
Reduce the memory size used for testing ck_fifo_mpmc, to make it easier for
...
low-memory machines (such as your typical arm hardware).
Approved by: mux (mentor)
11 years ago
Samy Al Bahra
566d0c68be
regressions/ck_hs: Move sliding window.
11 years ago
Samy Al Bahra
3c1c91bd25
regressions: Update ck_hs_gc coverage.
11 years ago
Samy Al Bahra
f085d75ff6
regressions/ck_hs: Performance coverage.
11 years ago
Samy Al Bahra
5f6cbabc4b
regressions/ck_hs: Serial coverage for rebuild.
11 years ago
Samy Al Bahra
c2f5ca52f6
regressions/ck_hs: Serial benchmark coverage for DELETE mode.
11 years ago
Samy Al Bahra
aadae2bf13
regressions/ck_hs: Coverage for delete mode.
11 years ago
Samy Al Bahra
f805ee746e
regressions: Coverage for ck_hs_put_unique.
11 years ago
Samy Al Bahra
2769ce1a09
regressions/ck_hs: Add ck_hs tombstone stride workload to serial benchmark.
...
This measures clustering effect of tombstones on average probe sequence
length.
11 years ago
Samy Al Bahra
0610a0d0a8
ck_bag: Drop support for this data structure.
...
Could not find suitable use-case and generally doesn't
appear interesting to academics in the existing
form. Maybe it will make a come-back in the future with
fewer memory and latency compromises.
11 years ago
Samy Al Bahra
de9220ce16
ck_array: Change semantics of put_unique return values.
...
More specifically, -1 should idiomatically indicate error.
11 years ago
Samy Al Bahra
493360636b
ck_array: Additional regressions coverage and code clean-up.
11 years ago
Samy Al Bahra
ef15380a62
regressions/ck_hs: Increase coverage across multiple start sizes.
11 years ago
Samy Al Bahra
7a49725b7f
ck_array: Fix use-after-free on transactional put.
11 years ago
Samy Al Bahra
a7cb0f9bbb
ck_array: Add ck_array_initialized functionality.
...
The function returns true if the target is initialized, otherwise,
it returns false.
11 years ago
Samy Al Bahra
2db9de633f
ck_array: Simple eliminating SPMC dense array for fast iteration.
...
The array is optimized for SPMC and fast iteration (though MPMC
transformation is also possible). This is an extremely simple
implementation with support for atomic in-place modification
through put -> remove elimination.
11 years ago
Samy Al Bahra
1898a8e450
regressions: Coverage for CK_SEQUENCE_READ.
11 years ago
Samy Al Bahra
61d5beff46
regressions: Use correct hash value for blob!
12 years ago
Samy Al Bahra
077ca3ab00
regressions: Increase coverage of ck_hs_move.
...
Iteration count increased, duplicate logic fixed.
12 years ago
Samy Al Bahra
120a262f18
ck_hs: Test coverage for ck_hs_move.
12 years ago
Samy Al Bahra
721cc0605c
regressions: Remove -g from ck_rwcohort build flags.
12 years ago
Samy Al Bahra
895ff34aab
regressions: Add ck_rwcohort to top-level Makefile.
12 years ago
Samy Al Bahra
b36e35ec76
Merge branch 'master' of https://github.com/bscheinman/ck
12 years ago
Samy Al Bahra
768b5b3597
ck_rwlock: Add adaptive elision and unit tests.
12 years ago
Samy Al Bahra
ac4a703525
regressions: Get rid of debug flags in ck_rwlock benchmark.
12 years ago
Samy Al Bahra
671f82d7a8
ck_rwlock: Migrate to ck_elide.h.
12 years ago
Samy Al Bahra
143bc4b336
regressions: Add ck_spinlock locked coverage.
12 years ago
Samy Al Bahra
4d2ccfe497
ck_rwlock: Add basic RTM interface to rwlock.
...
It is possible this will be moved to a self-contained file.
For a majority of architectures, RTM is an unnecessary
implementation-specific optimization.
12 years ago
Samy Al Bahra
7f5216c4c6
regressions/ck_sequence: Add fast-path latency measurement.
12 years ago
Brendon Scheinman
cb0a7c8ce6
Merge branch 'master' of https://github.com/sbahra/ck
12 years ago
Samy Al Bahra
d0745f51ee
regressions: Lower wait factor for ck_ticket_pb.
12 years ago
Samy Al Bahra
b63fe45460
regressions: Fix uninitialized usage in ck_hs parallel_bytestring.
12 years ago
Samy Al Bahra
03efd38742
regressions: Testing of ck_hs_fas functionality.
12 years ago
Brendon Scheinman
cbfa095108
Merge branch 'master' of https://github.com/sbahra/ck
12 years ago
Samy Al Bahra
137fb49951
regressions: Fix link order.
12 years ago
Brendon Scheinman
eacaacdb6e
ck_rwcohort: Fixed Makefile for automated regression testing
12 years ago
Brendon Scheinman
444df7dfe5
Merge branch 'master' of https://github.com/sbahra/ck
12 years ago
Samy Al Bahra
ca35d3bb75
regressions/ck_hs: Fix typo in Copyright statement.
12 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
Samy Al Bahra
281b5ad045
Merge branch 'master' of https://github.com/davidjoseph/ck
12 years ago
Brendon Scheinman
cc4b248bcb
ck_rwcohort: Renamed ck_rwcohort namespace
12 years ago
Brendon Scheinman
e0f46e6045
merged from upstream repo
12 years ago
Brendon Scheinman
0d20391563
ck_rw_cohort: Added benchmark tests for reader-writer cohort locks
12 years ago
Brendon Scheinman
f693a16253
ck_rw_cohort: Added neutral reader-writer lock
12 years ago
Brendon Scheinman
21750b9321
ck_rw_cohort: Added read-preference logic and updated validation test to use it
12 years ago
Samy Al Bahra
16e8b1c672
regressions/ck_ring: Allow for buffers of size 4 or more.
12 years ago
David Joseph
adc1e28856
regressions: Windows header and define fixes.
12 years ago
David Joseph
d17d8e87bb
regressions: Remove void * casting.
12 years ago
David Joseph
ce3426ffaf
Merge branch 'master' of git://git.concurrencykit.org/ck
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
Samy Al Bahra
099ec934b2
regressions/ck_queue: Remove stale include file.
...
This was added during testing to verify parity with
sys/queue.h.
12 years ago
David Joseph
9d37e38580
regressions: Remove exes with make clean.
12 years ago
Samy Al Bahra
d05fb25cfd
regressions: Remove ITERATION specialization silliness.
12 years ago
Samy Al Bahra
7de2d45d1a
Merge branch 'master' of https://github.com/davidjoseph/ck
12 years ago
Brendon Scheinman
a352b46d0b
ck_rw_cohort: renamed ck_rw_cohort namespace
12 years ago
Samy Al Bahra
011a9751a6
ck_queue: Add traversal-safe SPMC STAILQ.
12 years ago
Samy Al Bahra
9cf089b157
regressions/ck_list: Coverage for INSERT_AFTER/INSERT_BELOW.
12 years ago
David Joseph
ebc58ede20
regressions: fix common_gettimeofday.
...
Accidentally moved code that sets tv_sec/usec outside of tv NULL check.
12 years ago
David Joseph
8c88190557
regressions: fix printing timevalues in MinGW.
12 years ago
David Joseph
ef2ad6b998
regressions: Implement common_gettimeofday.
...
Windows uses GetSystemTimeAsFileTime, which has some differences
with Unix' gettimeofday.
This commit also reduces the number of iterations for the ck_ticket_pb
validation to 1000 - the test was taking too long on MinGW systems.
12 years ago
David Joseph
36a2ba143a
Merge branch 'master' of https://github.com/sbahra/ck
12 years ago
Samy Al Bahra
34a5bf4266
regressions/ck_cohort: Whitespace cleanup.
12 years ago
Samy Al Bahra
676f8fed88
Merge branch 'cohort_trylock' of git://github.com/bscheinman/ck
12 years ago
Samy Al Bahra
5c90d917f7
regressions/ck_ring: More improvements and _size coverage.
...
SPMC path exercises random delays. Coverage exists for
the new *_enqueue_*_size
12 years ago
Brendon Scheinman
3fefa3b5a3
ck_cohort: Fixed regression tests based on ck_cohort_rw changes
12 years ago
Brendon Scheinman
77ff96b15a
ck_cohort_rw: Added latency and throughput benchmark regression tests
12 years ago
Brendon Scheinman
114c916fea
ck_cohort_rw: Cleaned up regression files from last commit
12 years ago
Brendon Scheinman
5e1b614108
ck_cohort_rw: Initial implementation with validation test.
...
I still need to implement benchmark tests and write documentation. The reader-writer cohort locks also required that I add a method to the existing ck_cohort framework to determine whether or not a cohort lock is currently in a locked state.
12 years ago
Brendon Scheinman
3c8728b214
ck_cohort: Added trylock support to cohort framework
12 years ago
Brendon Scheinman
78fbe93caa
ck_cohort: fixed regression tests to match new CK_COHORT_PROTOTYPE signature
12 years ago
Brendon Scheinman
ed5292546f
merged changes from main ck repo
12 years ago
David Joseph
60873b9af5
Merge branch 'master' of https://github.com/sbahra/ck
12 years ago
David Joseph
9640eabba8
regressions: Fix for common alarm init.
12 years ago
David Joseph
aaebc6b31b
regressions: Fix for common alarm prefixes.
12 years ago
David Joseph
da23134615
regressions: Fix for alarm interface.
12 years ago
David Joseph
0784be7ff0
regressions: Fix tests that use common alarm.
12 years ago
David Joseph
339a1bd639
regressions: Add prefix to common alarm interface.
12 years ago
Samy Al Bahra
7e9a020abd
regressions: Add ck_pflock clean target.
12 years ago
Samy Al Bahra
f6a53fd9de
ck_cohort: First-cut implementation of generalized cohort interface.
...
This work was contributed by Brendon Scheinman. This work is based
off "Lock Cohorting: A General Technique for Designing NUMA Locks".
12 years ago
Brendon Scheinman
5914bbe2c2
ck_cohort: Moved locks to separate cachelines in throughput test
12 years ago
Brendon Scheinman
c4e3edfeac
Merge branch 'master' of https://github.com/sbahra/ck into cohort
12 years ago
Brendon Scheinman
81a90e41a2
review: A couple more changes based on ck_cohort review
...
I added an extra argument to the CK_COHORT_INIT macro to allow users to specify custom pass limits
when using it. I also added a reference to the paper on which the cohort implementation was based.
12 years ago
Brendon Scheinman
803073b024
interface: Made ck_cohort interface more flexible for custom types
12 years ago
Brendon Scheinman
44ea3a4688
review: First round of review changes
...
The constants and macros in ck_cohort.h didn't conform to CK naming conventions. Additionally, I was able to remove a lot of unnecessary atomic operations and memory fences, which reduced latency by 10-20% and increased throughput using ticket locks by nearly an order of magnitude.
12 years ago
Samy Al Bahra
7ce276f5eb
regressions: Add ck_pflock to make check target.
12 years ago
Samy Al Bahra
54845bb8e7
ck_pflock: Phase-fair read-write lock implementation.
...
John Wittrock has contributed a phase-fair reader-writer
lock implementation. These locks allow phase fairness
guarantees between readers and writers. This work includes
additional changes and clean-up.
Follow-up work is expected.
Thanks to John Wittrock for patches and Professor Gabriel
Parmer (http://www.seas.gwu.edu/~gparmer/ ) for advising.
12 years ago
Brendon Scheinman
e06b4a26ff
cleanup: Removed unnecessary code copied from ck_spinlock's throughput test
12 years ago
Brendon Scheinman
2492f16ec9
whitespace: Added missing space to usage message
12 years ago
Brendon Scheinman
c6cd9e5be8
testing: Added throughput test for ck_cohort
12 years ago
Brendon Scheinman
2cb79b0658
testing: Added latency test for ck_cohort
12 years ago
Samy Al Bahra
27d454248d
ck_spinlock: Add ticket lock with trylock operation.
...
Upon popular request, added a variant of the ticket spinlock
with trylock support. This is pending additional verification
on other architectures besides x86*. It is still unclear whether
this implementation will be the default as it is has slower
fast path.
Add trylock support to the ck_spinlock validation tests.
It currently only tests ck_spinlock_ticket_t trylock
functionality if available.
12 years ago
Brendon Scheinman
59cc30b671
testing: ck_cohort validation
...
The ck_cohort validation test had an error that would cause an uneven distribution of threads among cohorts when the affinity delta was set above 1.
12 years ago
Brendon Scheinman
d5c05309b4
cleanup: ck_cohort validation test
...
Removed unnecessary includes and fixed shadowed variable warning.
12 years ago
Brendon Scheinman
0a826ca93b
gitignore: Removed ck_cohort validation binary from git
12 years ago
Brendon Scheinman
dbe49215ac
testing: Added validation test for cohorts.
12 years ago
David Joseph
10c3b22e48
Merge remote-tracking branch 'upstream/master'
...
Fix regressions for linux systems.
12 years ago
Samy Al Bahra
aef827b5a3
regressions: Remove unnecessary include.
12 years ago
Samy Al Bahra
81b9313e10
build: Fix regression introduced by MingW32 port.
12 years ago
David Joseph
8f1c31aa2c
Style changes to common.h's alarm macros.
12 years ago
David Joseph
3e469d7fb5
Namespace changes to regressions/common.h (alarm).
...
Add "local_name" to COMMON_ALARM_DECLARE_LOCAL and
COMMON_ALARM_DECLARE_INIT to avoid namespace conflicts.
12 years ago
Samy Al Bahra
9c298fc78b
whitespace: Remove unnecessary newline.
12 years ago
David Joseph
1298a6c335
Add support for MinGW32.
...
This primarily involved changing the configure script and adding
several utility functions to regressions/common.h for unit testing.
Signed-off-by: Samy Al Bahra <sbahra@appnexus.com>
12 years ago
Samy Al Bahra
9152cc7cea
regressions/ck_hp_fifo_donner: This was submitted from a Windows editor.
...
Switch to using UNIX EOL.
12 years ago
Samy Al Bahra
f9a484a10d
build: Disclaimer that regressions are unsupported for out-of-source builds.
12 years ago
Samy Al Bahra
cff7b1b21f
regressions/ck_queue: Add coverage for previous regression.
12 years ago
Samy Al Bahra
e517126247
regressions: Enable rdtsc for x86-32 targets.
12 years ago
Samy Al Bahra
72855320c4
regressions/ck_hs: Do not rely on ck_pr_add_64 for benchmarks.
...
ck_hs now officially targets the 32-bit ports. No advantage
to using ck_pr_*_64 operations here.
12 years ago
Samy Al Bahra
5d1fff2e06
regressions/ck_pr: Place double tests under feature flag.
12 years ago
Samy Al Bahra
33a9222923
legal: Update Copyright statements.
12 years ago
Samy Al Bahra
ca6637a57c
regressions/ck_pr: Utilize _GNU_SOURCE for ck_pr_store unit test.
12 years ago
Samy Al Bahra
3293cde2d2
regressions/common: Add missing header files in common.h
12 years ago