Samy Al Bahra
6c4074aaf3
ck_ht: Fix ck_ht_hash inline behavior.
...
The original code did not correctly specify inline behavior.
Pointed out by Wez Furlong.
11 years ago
Samy Al Bahra
29a84b47b3
ck_hs: Add ck_hs_move operation.
...
This operation moves ownership from one hash set object
to another and re-assigns callback functions to developer-specified
values. This allows for dynamic configuration of allocation
callbacks and is necessary for use-cases involving executable code
which may be unmapped underneath the hash set.
The developer is responsible for enforcing barriers and enforcing
the visibility of the new hash set.
12 years ago
Samy Al Bahra
68ec467ca8
ck_hs: Branch simplification on fast path.
...
Take advantage of probe function invariant
(object != NULL) -> (slot != NULL).
12 years ago
Samy Al Bahra
6587bfa51d
ck_hs: Universally use slot as unit for probe limit optimization.
12 years ago
Samy Al Bahra
1cdbb7b7bf
ck_hs: Remove unused return value from ck_hs_fas.
12 years ago
Samy Al Bahra
693ad68b86
ck_hs: Existence requires generation check.
...
It is possible for a defragmenting set or swap operation
to set a tombstone. If the probe sequence does not encounter
an empty slot and hits maximum write-side probe limit first
for it to fail to reprobe defragmenting store.
12 years ago
Samy Al Bahra
86619b3c38
ck_hs: Add atomic swap operation (requires existence).
12 years ago
Samy Al Bahra
6c7781d8c3
ck_hs: Simplify marshal path for inserted pointer.
...
ck_hs_marshal function has been added which mutates
pointer to appropriate representation for insertion.
12 years ago
Samy Al Bahra
58af5c3072
ck_epoch: Elaborate on ck_epoch_register load fence.
12 years ago
Samy Al Bahra
4492325ccc
ck_hs: Migrate to ck_pr_fence_X_Y.
12 years ago
Samy Al Bahra
855a1472a8
ck_ht: Add ck_ht_reset_size_spmc operation.
...
The ck_ht_reset_size_spmc operation takes an additional argument
that allows the user to specify the size of the new generation
of the hashtable.
12 years ago
Samy Al Bahra
73531e9e48
ck_hs: Add ck_hs_reset_size operation.
...
The ck_hs_reset_size operation takes an additional argument
that allows the user to specify the size of the new generation
of the hashset.
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
c6ff128510
ck_hs: Move replacement comment to ck_hs_set.
12 years ago
Samy Al Bahra
8bad50240d
ck_hs: Eliminate pointless legacy branch.
12 years ago
Samy Al Bahra
bdadd7bf6b
whitespace: More style fixes.
12 years ago
Samy Al Bahra
b4e9045c9b
ck_barrier_tournament: Remove old/stale comments.
...
ck_pr_load is unnecessary. It is assumed a strong fence follows
initialization (through thread creation boundary, for example
or explicit IPI).
12 years ago
Samy Al Bahra
7c56d73433
ck_barrier_mcs: Style clean-up.
12 years ago
Samy Al Bahra
3587d8e51b
build: Remove debug left-over.
12 years ago
Samy Al Bahra
e6e97f3ae5
build: Out-of-source builds for primary CK distribution.
...
Out of source regressions target still needs additional work
(because it's not there).
12 years ago
Samy Al Bahra
1a0b4122ec
ck_hs: Re-use tombstones near load factor.
...
This is similar to the set of changes done to ck_ht.
In addition to this, a bug was caught were minimal
probe sequence was based on last rather than first
tombstone observed.
This hashset will now face long-running bursty
write -> delete -> write workloads much more effectively
and includes significant performance improvements for
delete heavy workloads (at least 2x measured).
12 years ago
Samy Al Bahra
2116dfee3c
ck_ht: Increment n_entries on empty and tombstone insertions.
12 years ago
Samy Al Bahra
9a0d97c6ef
ck_ht: Set previous entry to empty on tombstone insert.
12 years ago
Samy Al Bahra
452cab1ef6
ck_ht: Return snapshot of object IFF we are not at end of probe sequence.
12 years ago
Samy Al Bahra
5a4dc765d8
ck_ht: Remember to set cursor to NULL on probe end.
12 years ago
Samy Al Bahra
1631f2ff84
ck_ht: Enable aggressive re-use of tombstones.
...
Previously, a probe to an empty slot was necessary in order
to avoid hash table growth. As long as a tombstone is available,
re-use it. This prevents excessive growth on workloads involving
long bursts of writes (near 0.5 load factor) followed by long
bursts of deletes.
12 years ago
Samy Al Bahra
33a9222923
legal: Update Copyright statements.
12 years ago
Samy Al Bahra
0631e396e0
ck_backoff: Replace ck_backoff_eb with ck_backoff_gb.
...
The distinction between additive/exponential implementation
and geometric implementation does little but confuse users.
The terminology used in ck_backoff now reflects terminology
used in literature.
ck_backoff_gb has been removed.
12 years ago
Samy Al Bahra
3cc43c4229
ck_epoch: Skip current record if it is marked as free.
...
Pointed out by Matt Johnson <jonhso87@crhc...>.
12 years ago
Samy Al Bahra
0c56b1b8c6
ck_epoch: Remember to mark entry availability on unregister.
...
Pointed out by Matt Johnson (johnso87@crhc....>.
12 years ago
Samy Al Bahra
05f36bc476
ck_internal: Follow-up to previous commit.
12 years ago
Samy Al Bahra
a7d79970e7
ck_{ht,internal}: Explicitly use unsigned for bitwise operations.
12 years ago
Samy Al Bahra
749a40159d
ck_hs: Fix ck_hs_next to check key value.
12 years ago
Samy Al Bahra
e5d701ca79
ck_hs: Whitespace changes.
12 years ago
Samy Al Bahra
51516312ce
ck_hs: Clear bits in iterator.
12 years ago
Samy Al Bahra
e9ca398123
ck_hs: Add ck_hs_destroy.
12 years ago
Samy Al Bahra
6fded0c0a1
ck_hs: Silence false positives from GCC.
12 years ago
Samy Al Bahra
f2dfd828c3
Merge pull request #7 from abelmathew/master
...
CK_MD_VMA_BITS
12 years ago
Samy Al Bahra
ece2895e9e
ck_hs: Drop ck_hs_hash_t abstraction.
...
No need for opaque type anymore.
12 years ago
Abel Mathew
00d0320767
ck_bag: Fix usage of CK_MD_VMA_BITS.
12 years ago
Samy Al Bahra
b4ab193944
ck_hs: Re-order map elements according to reader use.
...
Try to get generation, probe_maximum, mask and step on same
cache line.
12 years ago
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
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
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
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
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
dac91d1edd
ck_epoch: Short-circuit on scan block if epoch tick is encountered.
12 years ago