khizmax [Mon, 24 Apr 2017 16:11:45 +0000 (19:11 +0300)]
Removed prohibited atomic<void*>::fetch_xxx() tests
khizmax [Mon, 24 Apr 2017 16:05:21 +0000 (19:05 +0300)]
Restored acq-rel fence in urcu access_lock().
Seems, CLang 3.6/3.7 cannot handle acquire barrier on atomic var correctly
khizmax [Sun, 23 Apr 2017 21:35:07 +0000 (00:35 +0300)]
Removed odd assert
khizmax [Sun, 23 Apr 2017 20:52:19 +0000 (23:52 +0300)]
Removed constexpr from node ctor
khizmax [Sun, 23 Apr 2017 17:19:23 +0000 (20:19 +0300)]
[signal-handled urcu]: add cacheline padding to URCU thread data
Todd Lipcon [Fri, 21 Apr 2017 23:01:47 +0000 (16:01 -0700)]
urcu: add cacheline padding to URCU thread data
The thread-local data was previously smaller than a cacheline, so it was
possible for multiple thread's thread data to be allocated on the same
cacheline and cause false sharing.
I measured the offcore_response.all_data_rd.l3_hit.hitm_other_core
perf counter in a read-only workload with 16 threads executing a
read-only workload against a URCU-protected split-list set. Before, I
saw about 5.6M events per second. After, I saw basically none.
Additionally, 'perf c2c' showed a lot of cache-line bouncing in the URCU
read side critical section before, but now shows none.
I benchmarked the above read-only workload on a machine with 88 logical
cores (Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz) and 88 threads, and
the performance improved more than 2x.
Fixes issue #75
khizmax [Sat, 22 Apr 2017 16:31:36 +0000 (19:31 +0300)]
[urcu] Replaced RMW atomics with atomic load/store in URCU read-side lock/unlock.
Fixing the barriers speed up a micro-benchmark (16 threads accessing an RCU-protected split-list set) by 30-40%. Thanks to Todd Lipcon who found this improvement
khizmax [Sat, 22 Apr 2017 14:46:46 +0000 (17:46 +0300)]
[SkipList] Added random-lvel generators for max height 32/24/16
khizmax [Sat, 22 Apr 2017 08:01:39 +0000 (11:01 +0300)]
[TSan] Fixed memory order
khizmax [Tue, 18 Apr 2017 19:16:39 +0000 (22:16 +0300)]
Fixed optimization level for xSan-instrumented build
khizmax [Tue, 18 Apr 2017 18:07:12 +0000 (21:07 +0300)]
Added release barrier to node initialization
khizmax [Mon, 17 Apr 2017 19:34:50 +0000 (22:34 +0300)]
Fixed memory ordering (by TSan reports)
khizmax [Sun, 16 Apr 2017 18:47:06 +0000 (21:47 +0300)]
Disabled signal-handled RCU for TSan build
khizmax [Sun, 16 Apr 2017 18:46:25 +0000 (21:46 +0300)]
Remooved constespr from ctor
khizmax [Sun, 16 Apr 2017 16:24:45 +0000 (19:24 +0300)]
Removed redundant comment
khizmax [Sun, 16 Apr 2017 16:17:52 +0000 (19:17 +0300)]
Changed pqueue stress-test params for debug mode
khizmax [Sun, 16 Apr 2017 16:16:49 +0000 (19:16 +0300)]
Merge branch 'dev' of github.com:khizmax/libcds into dev
khizmax [Sun, 16 Apr 2017 09:22:31 +0000 (12:22 +0300)]
Changed stack stress-test params for debug build
khizmax [Sun, 16 Apr 2017 09:21:53 +0000 (12:21 +0300)]
Fixed missing acquire read in Flat-Combining algorithm (found by TSan)
Removed redundant TSan annotation from FC-based containers
khizmax [Sat, 15 Apr 2017 09:16:55 +0000 (12:16 +0300)]
Fixed atomic initialization, ordering optimization
khizmax [Sat, 15 Apr 2017 09:16:10 +0000 (12:16 +0300)]
Fix typo
khizmax [Tue, 11 Apr 2017 08:28:47 +0000 (11:28 +0300)]
Fixed CI gen script
khizmax [Mon, 10 Apr 2017 20:30:19 +0000 (23:30 +0300)]
Added exe linker flags to the output
khizmax [Mon, 10 Apr 2017 20:29:37 +0000 (23:29 +0300)]
Fixed preprocessor symbol duplication
khizmax [Mon, 10 Apr 2017 20:28:49 +0000 (23:28 +0300)]
[TSan] Fixed memory order constraints
khizmax [Wed, 5 Apr 2017 20:45:44 +0000 (23:45 +0300)]
Fixed memory ordering constraints
khizmax [Wed, 5 Apr 2017 20:44:33 +0000 (23:44 +0300)]
Use atomic exchange instead of CAS in try_lock()
Added TSan annotations
khizmax [Wed, 5 Apr 2017 20:42:39 +0000 (23:42 +0300)]
Fixed memory ordering
khizmax [Sat, 1 Apr 2017 16:35:04 +0000 (19:35 +0300)]
[TSan] Fixed data races in HP/DHP
khizmax [Sat, 1 Apr 2017 16:34:22 +0000 (19:34 +0300)]
CMake minor fixing
khizmax [Mon, 27 Mar 2017 21:28:54 +0000 (00:28 +0300)]
Updated CMake script to detect arm64
khizmax [Sun, 26 Mar 2017 08:20:35 +0000 (11:20 +0300)]
Docfix
khizmax [Sat, 25 Mar 2017 08:06:51 +0000 (11:06 +0300)]
Split stress-queue test
khizmax [Sun, 19 Mar 2017 20:07:36 +0000 (23:07 +0300)]
Fixed GCC 4.8 incompatibility
khizmax [Sun, 19 Mar 2017 08:55:54 +0000 (11:55 +0300)]
Used std::thread::hardware_consurrency() to get processor count in Linux
khizmax [Sun, 19 Mar 2017 07:50:17 +0000 (10:50 +0300)]
uRCU: docfix, mark some virtual func as "override"
khizmax [Sat, 18 Mar 2017 21:12:57 +0000 (00:12 +0300)]
Removed signal_threaded uRCU
khizmax [Sat, 18 Mar 2017 15:12:59 +0000 (18:12 +0300)]
Removed redundant ctor
khizmax [Sat, 18 Mar 2017 14:17:56 +0000 (17:17 +0300)]
Removed redundant atomics in urcu disposing thread
khizmax [Sat, 18 Mar 2017 07:24:22 +0000 (10:24 +0300)]
Added different bit_reversal algo to SplitListSet/Map stress test
khizmax [Wed, 15 Mar 2017 21:06:48 +0000 (00:06 +0300)]
Added new files to VC 2015 projects
khizmax [Wed, 15 Mar 2017 20:52:55 +0000 (23:52 +0300)]
Added several bit reversal algo
Added option to select bit reversal algorithm for SplitList-based containers
khizmax [Wed, 15 Mar 2017 05:53:36 +0000 (08:53 +0300)]
Removed IterableList-based SplitListMap/Set from "erase by iterator" stress-test
khizmax [Tue, 14 Mar 2017 18:30:06 +0000 (21:30 +0300)]
Removed wrong assertion
khizmax [Tue, 14 Mar 2017 16:03:06 +0000 (19:03 +0300)]
Excluded IterableList-based MichaelMap/Set from "erase by iterator" stress-test
khizmax [Tue, 14 Mar 2017 08:11:47 +0000 (11:11 +0300)]
Rearranged rotation code
khizmax [Tue, 14 Mar 2017 07:21:35 +0000 (10:21 +0300)]
Added missing typename
khizmax [Mon, 13 Mar 2017 20:36:19 +0000 (23:36 +0300)]
Updated CI build machine configs
khizmax [Mon, 13 Mar 2017 20:32:55 +0000 (23:32 +0300)]
added erase_at()
khizmax [Mon, 13 Mar 2017 20:26:18 +0000 (23:26 +0300)]
Added erase_at( iterator ) function to MichaelHashSet/Map and SplitListSet/Map based on IterableList
khizmax [Mon, 13 Mar 2017 19:16:11 +0000 (22:16 +0300)]
Fixed clang 4 incompatibility
khizmax [Sun, 12 Mar 2017 08:31:45 +0000 (11:31 +0300)]
Added stress-map-iter-erase test for erase_at()
khizmax [Sun, 12 Mar 2017 07:40:43 +0000 (10:40 +0300)]
Added setup for set-stress-iter-erase
khizmax [Sat, 11 Mar 2017 20:16:57 +0000 (23:16 +0300)]
Fixed GCC warnings
khizmax [Sat, 11 Mar 2017 16:58:31 +0000 (19:58 +0300)]
Added stress-set-iter-erase test for testing erase_at() - erasing by iterator
khizmax [Sat, 11 Mar 2017 15:22:33 +0000 (18:22 +0300)]
Added assertions for node ordering
khizmax [Sat, 11 Mar 2017 08:02:14 +0000 (11:02 +0300)]
Removed legacy suppression
khizmax [Sat, 11 Mar 2017 07:29:39 +0000 (10:29 +0300)]
Mutex-based flat-combining wait strategy: try to reduce starvation
khizmax [Fri, 10 Mar 2017 20:08:01 +0000 (23:08 +0300)]
Minor stress-test change
khizmax [Thu, 9 Mar 2017 20:19:53 +0000 (23:19 +0300)]
Removed signal-handled RCU from daily stress-testing
khizmax [Thu, 9 Mar 2017 18:28:12 +0000 (21:28 +0300)]
Fixed potentially incorrect usage of Win API
khizmax [Wed, 8 Mar 2017 21:41:55 +0000 (00:41 +0300)]
Changed default back-off strategy
khizmax [Wed, 8 Mar 2017 21:32:40 +0000 (00:32 +0300)]
Tuning stress-test parameters
khizmax [Wed, 8 Mar 2017 20:27:36 +0000 (23:27 +0300)]
Tuning stress-test parameters
khizmax [Wed, 8 Mar 2017 20:26:40 +0000 (23:26 +0300)]
Tuning stress-test parameters
khizmax [Wed, 8 Mar 2017 20:20:47 +0000 (23:20 +0300)]
Fixed VC++ project dependencies
khizmax [Wed, 8 Mar 2017 20:17:23 +0000 (23:17 +0300)]
Added 32bit integer functions
khizmax [Wed, 8 Mar 2017 09:53:00 +0000 (12:53 +0300)]
Revised processor-specific hints for back-off
khizmax [Wed, 8 Mar 2017 08:37:21 +0000 (11:37 +0300)]
[UBsan] fixed UB
khizmax [Wed, 8 Mar 2017 08:36:31 +0000 (11:36 +0300)]
Fixed VC 2017 warning
khizmax [Wed, 8 Mar 2017 06:56:34 +0000 (09:56 +0300)]
Fixed CMake script
khizmax [Wed, 8 Mar 2017 06:47:36 +0000 (09:47 +0300)]
Fixed split-bitstring test for BE arch
khizmax [Wed, 8 Mar 2017 06:13:50 +0000 (09:13 +0300)]
Added MSVC 2017 solution
khizmax [Tue, 7 Mar 2017 20:07:51 +0000 (23:07 +0300)]
[cmake] Added ability to specify C++ std explicitly in -DCMAKE_CXX_FLAGS cmdline option
khizmax [Tue, 7 Mar 2017 18:53:15 +0000 (21:53 +0300)]
Fixed test for 32-bit platforms
khizmax [Tue, 7 Mar 2017 07:54:20 +0000 (10:54 +0300)]
[UBsan] Fixed signed integer overflow
khizmax [Tue, 7 Mar 2017 07:45:42 +0000 (10:45 +0300)]
Fixed UBsan warning "call to function through pointer to incorrect function type"
khizmax [Tue, 7 Mar 2017 07:44:58 +0000 (10:44 +0300)]
Tuning stress test parameters
khizmax [Mon, 6 Mar 2017 12:18:42 +0000 (15:18 +0300)]
Fixed UBsan warning "call to function through pointer to incorrect function type"
khizmax [Sun, 5 Mar 2017 20:25:45 +0000 (23:25 +0300)]
[UBsan] Added proper alignment for EllenBinTree node
khizmax [Sun, 5 Mar 2017 20:03:39 +0000 (23:03 +0300)]
Fixed minor compiler warning
khizmax [Sun, 5 Mar 2017 20:01:45 +0000 (23:01 +0300)]
Fixed minor compiler warning
khizmax [Sun, 5 Mar 2017 19:58:47 +0000 (22:58 +0300)]
[UBsan] Added macro CDS_SUPPRESS_SANITIZE for sanitizers to suppress some warnings
khizmax [Sun, 5 Mar 2017 18:46:43 +0000 (21:46 +0300)]
[UBsan] Fixed set-insdelfind stress test
khizmax [Sun, 5 Mar 2017 18:37:39 +0000 (21:37 +0300)]
Improved CI scripts
khizmax [Sun, 5 Mar 2017 18:37:25 +0000 (21:37 +0300)]
Fixed compiler warnings
khizmax [Sun, 5 Mar 2017 08:21:22 +0000 (11:21 +0300)]
[UBsan] Fixed int overflow
khizmax [Sun, 5 Mar 2017 08:16:17 +0000 (11:16 +0300)]
Removed asan_errors.cpp from build
khizmax [Sun, 5 Mar 2017 08:11:40 +0000 (11:11 +0300)]
FeldmanHashSet: added checking if a slot can be expanded
Changed: split-bitstring algo detects byte order now
Added: number_splitter and byte_splitter split-bit-string algo
Removed old CDS_STDCALL macro
khizmax [Tue, 28 Feb 2017 18:28:54 +0000 (21:28 +0300)]
Fixed aarch64 support for gcc
khizmax [Tue, 28 Feb 2017 07:30:40 +0000 (10:30 +0300)]
Fixed CMakeList
khizmax [Mon, 27 Feb 2017 18:18:45 +0000 (21:18 +0300)]
Added ASan simple test to setup Jenkins report
khizmax [Mon, 27 Feb 2017 08:00:09 +0000 (11:00 +0300)]
RCU<signal_handler_threaded> suppressed for usual run
khizmax [Mon, 27 Feb 2017 07:51:33 +0000 (10:51 +0300)]
Added UBSan to ASan-instrumented code
khizmax [Sun, 26 Feb 2017 19:04:09 +0000 (22:04 +0300)]
Fixed compiler error
khizmax [Sun, 26 Feb 2017 16:20:07 +0000 (19:20 +0300)]
Fixed build script: set CLang compiler as sanitizer-enabled
khizmax [Sun, 26 Feb 2017 16:02:57 +0000 (19:02 +0300)]
Split stress-set-insdelfind to HP and RCU part
khizmax [Sun, 26 Feb 2017 15:16:38 +0000 (18:16 +0300)]
Split stress-map-insdelfind test to HP and RCU part
khizmax [Sun, 26 Feb 2017 15:09:24 +0000 (18:09 +0300)]
Fixed CI scripts for build machines
khizmax [Sun, 26 Feb 2017 13:25:46 +0000 (16:25 +0300)]
Fixed CI generator script