Mathieu Desnoyers [Thu, 18 Jun 2009 20:26:17 +0000 (16:26 -0400)]
Add nosched model results (for signal readers)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 20:21:18 +0000 (16:21 -0400)]
Cleanup verif directory.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 18:11:00 +0000 (14:11 -0400)]
Add phase 3 : scalability run
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 16:47:44 +0000 (12:47 -0400)]
Put back 4096 for runall.sh batch size
Basically, when we get to 16384, it's the error due to non-handled removals that
makes this value "look" faster.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 16:42:06 +0000 (12:42 -0400)]
update runtests.sh
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 16:40:58 +0000 (12:40 -0400)]
Update runall.sh default batch size
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 16:33:47 +0000 (12:33 -0400)]
Make batch test shorter
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 16:25:41 +0000 (12:25 -0400)]
Add 2 phases test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 16:20:37 +0000 (12:20 -0400)]
Add "runpaul.sh" test script
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 15:52:10 +0000 (11:52 -0400)]
Fix makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 15:33:06 +0000 (11:33 -0400)]
Add more batch sizes to tests, just in case
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 15:09:51 +0000 (11:09 -0400)]
Update default value for batch size
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 15:01:18 +0000 (11:01 -0400)]
Fix gc tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 13:36:35 +0000 (09:36 -0400)]
Update summary
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 13:33:51 +0000 (09:33 -0400)]
Update makefile64
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 13:33:12 +0000 (09:33 -0400)]
Update makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Jun 2009 13:32:46 +0000 (09:32 -0400)]
Add GC tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 17 Jun 2009 16:31:58 +0000 (12:31 -0400)]
Merge branch 'master' of lttng.org:/home/git/userspace-rcu
Mathieu Desnoyers [Wed, 17 Jun 2009 16:31:36 +0000 (12:31 -0400)]
Fix typo in license file
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
compudj [Tue, 16 Jun 2009 21:40:28 +0000 (17:40 -0400)]
Add cpu time
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
compudj [Tue, 16 Jun 2009 21:29:25 +0000 (17:29 -0400)]
Add output to runall.log
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Paul E. McKenney [Sat, 13 Jun 2009 23:53:05 +0000 (19:53 -0400)]
Fix test_looplen, use double-precition arithmetic
Here you go!!!
[root@perfsqh userspace-rcu]# ./test_looplen
CALIBRATION : 0 cycles per loop
Hmmm... Probably not what you had in mind. Breaking out the
floating-point arithmetic:
[root@perfsqh userspace-rcu]# ./test_looplen
CALIBRATION : 0.386172 cycles per loop
time_tot =
4049312, LOOPS =
1048576, TESTS = 10
More helpful? ;-)
Thanx, Paul
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 13 Jun 2009 23:18:38 +0000 (19:18 -0400)]
Other timing tests, update cache line size
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 13 Jun 2009 23:10:31 +0000 (19:10 -0400)]
Deal with POWER5+ 256B L3 cachefalse sharing for per thread lock
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 13 Jun 2009 21:52:43 +0000 (17:52 -0400)]
Add looplen cycle test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Paul E. McKenney [Sat, 13 Jun 2009 21:02:36 +0000 (17:02 -0400)]
Fix affinity in test script
You need to change the script!!! See patch below. All prior results
with more than 32 CPUs are bogus because the -a arguments confined the
threads to only 32 CPUs (the even-numbered ones from zero to 62).
Allow 64 CPUs. Really needs to do the calculation based on the
stride and the number of CPUs, but a quick hack for now.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Mathieu Desnoyers [Sat, 13 Jun 2009 19:00:03 +0000 (15:00 -0400)]
Added a few points to the readercs test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 13 Jun 2009 18:51:02 +0000 (14:51 -0400)]
Update update fraction test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 13 Jun 2009 18:40:53 +0000 (14:40 -0400)]
Update readcslen test to use NUM_CPUS readers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 13 Jun 2009 05:19:33 +0000 (01:19 -0400)]
Fix perthreadlock test
segmentation fault when 0 readers due to incorrect mutex array indexing (int vs
long types).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Paul E. McKenney [Sat, 13 Jun 2009 04:59:14 +0000 (00:59 -0400)]
Allow use on high-end Power systems.
Power systems self-identify as ppc64 rather than powerpc. Add the
corresponding logic to the Makefile.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 22:44:32 +0000 (18:44 -0400)]
Update fraction update
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 22:42:05 +0000 (18:42 -0400)]
Update update-fraction test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 19:28:29 +0000 (15:28 -0400)]
Update test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 19:16:29 +0000 (15:16 -0400)]
Add runall.sh test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 18:30:19 +0000 (14:30 -0400)]
Fix alignment of test names
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 18:28:18 +0000 (14:28 -0400)]
Align the summary result
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 18:18:46 +0000 (14:18 -0400)]
Add verbose mode
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 17:52:29 +0000 (13:52 -0400)]
Print reader duration
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 17:51:20 +0000 (13:51 -0400)]
Delay reader in loops, not us
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 12 Jun 2009 17:31:02 +0000 (13:31 -0400)]
Add -c option for read-side C.S. length to tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 22:44:58 +0000 (18:44 -0400)]
fix runtests.sh
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 22:43:37 +0000 (18:43 -0400)]
runtests include mutex test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 22:43:07 +0000 (18:43 -0400)]
Add test mutex
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 22:40:26 +0000 (18:40 -0400)]
Add set affinity -a option to tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 18:59:13 +0000 (14:59 -0400)]
Unlikely for tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 18:47:02 +0000 (14:47 -0400)]
Add i586 i686 to Makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 17:38:42 +0000 (13:38 -0400)]
Update readme
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 17:35:30 +0000 (13:35 -0400)]
Add Makefile and Makefile64 architecture autodetection
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 16:06:42 +0000 (12:06 -0400)]
Make sure the rwlock and per thread lock could detect races
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 16:01:47 +0000 (12:01 -0400)]
Fix deadlock in qsbr code
Readers must go offline because they unregister.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 15:55:06 +0000 (11:55 -0400)]
Fix qsbr urcu implementation
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 15:53:59 +0000 (11:53 -0400)]
Update makefiles
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 15:51:03 +0000 (11:51 -0400)]
Add missing void to function declaration
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 15:31:46 +0000 (11:31 -0400)]
Use more lightweight timer mechanism in test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 10 Jun 2009 14:17:35 +0000 (10:17 -0400)]
Remove unneeded signal-based MB from QSBR rcu
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Pierre-Marc Fournier [Tue, 9 Jun 2009 21:54:49 +0000 (17:54 -0400)]
Fix signal handler installation
The signal handler is not being set in conformance with the sigaction
manpage. Because of this, it is probably not set at all. Valgrind also
generates an error. This patch fixes this.
Signed-off-by: Pierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 21:50:23 +0000 (17:50 -0400)]
Add missing urcu-qsbr
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 18:20:08 +0000 (14:20 -0400)]
Add runtests.sh
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 18:15:56 +0000 (14:15 -0400)]
Add mb urcu flavor test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 18:09:21 +0000 (14:09 -0400)]
Add perthread lock scaling test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 17:55:00 +0000 (13:55 -0400)]
Move test start time closer to enable
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 16:50:37 +0000 (12:50 -0400)]
Add rwlock scalability test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 16:41:21 +0000 (12:41 -0400)]
Add scalability qsbr test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 9 Jun 2009 16:29:02 +0000 (12:29 -0400)]
Modify test_urcu to make more suitable for scalability benchmark
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 8 Jun 2009 18:57:27 +0000 (14:57 -0400)]
Add number of reader/writers parameters to tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 8 Jun 2009 18:41:37 +0000 (14:41 -0400)]
Add QSBR RCU timing tests
urcu-qsbr can be used for QSBR-based RCU.
Currently not built as a full-blown library .so, but could.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 8 Jun 2009 18:12:50 +0000 (14:12 -0400)]
update test timings for writer
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Mon, 8 Jun 2009 17:37:39 +0000 (13:37 -0400)]
Add per thread lock test case
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 4 Jun 2009 19:45:40 +0000 (15:45 -0400)]
Another ooo mem isched update
really just to simplify the LTL formula.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 4 Jun 2009 19:43:42 +0000 (15:43 -0400)]
Update isched ooomem model
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 4 Jun 2009 19:40:12 +0000 (15:40 -0400)]
Update ooo isched test
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 4 Jun 2009 18:58:21 +0000 (14:58 -0400)]
Use nicer LTL formula with eventually for ooomem model
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 4 Jun 2009 13:26:57 +0000 (09:26 -0400)]
Add speculative execution (prefetch) to model
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 3 Jun 2009 20:41:49 +0000 (16:41 -0400)]
Fix comment on top of oomem two writes model
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 3 Jun 2009 14:15:45 +0000 (10:15 -0400)]
Add Intel ipi urcu model run results
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 3 Jun 2009 04:48:08 +0000 (00:48 -0400)]
Add multiple arch support (alpha, intel, powerpc)
A simple define controls the architecture tested.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 30 May 2009 22:31:09 +0000 (18:31 -0400)]
Verification run #1, ipi and no-ipi results
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 30 May 2009 22:30:30 +0000 (18:30 -0400)]
Model used for ipi verification run #1
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 29 May 2009 14:59:29 +0000 (10:59 -0400)]
Configuration for remote barrier formal verif run
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 28 May 2009 13:40:48 +0000 (09:40 -0400)]
Update spin model
- Add memory poisoning to the ooo insn sched section.
- Put pointer update into ooo insn sched section.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 27 May 2009 14:38:27 +0000 (10:38 -0400)]
Use define SLAB_SIZE in promela model
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 27 May 2009 03:43:46 +0000 (23:43 -0400)]
urcu model wmb/read barrier depend
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Paul E. McKenney [Wed, 27 May 2009 01:03:24 +0000 (21:03 -0400)]
Add .gitignore entries to reduce 'git status' chatter
Add some entries to .gitignore files to reduce chatter from "git status".
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Paul E. McKenney [Tue, 26 May 2009 17:35:53 +0000 (13:35 -0400)]
catch urcu-paulmck.spin to my local version
The attached patch catches the repository up to my local version.
This adds the following:
o Checking for no-progress cycles.
o Allow enabling and disabling of update-side signal-mediated
broadcast memory barriers via #define statements.
o Enabling only those update-side signal-mediated broadcast
memory barriers that are required for correctness.
This version assumes that synchronize_rcu() is locally ordered, for
example, with smp_mb() calls between each pair of major statements.
Please note that smp_mb() is -not- assumed within the loops nor
immediately before the second counter flip.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 26 May 2009 17:31:36 +0000 (13:31 -0400)]
sync_core to smp_mb transition
- move sync_core to smp_mb in urcu.c, update comments.
- cpuid clashes with -fPIC because it clobbers ebx. Use mb() if ___PIC__ is
defined.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 20 May 2009 17:02:22 +0000 (13:02 -0400)]
Fix standard (no remote barrier) parity flip bug
A bug was introduced when moving from statically assigning the parity to wait
for on the update side (first even, then odd) to a model trying to deal the
single flip test case. It occurs that when busy-looping, the parity flip
occurred when it should not.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 20 May 2009 14:53:55 +0000 (10:53 -0400)]
Special-case reader/writer busy-loop for signals in progress
The reader may choose to always ignore signal requests or to busy-loop always
waiting for signal requests. Those are much less interesting wrt progress. Add
progress statements in those loops.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 20 May 2009 13:01:06 +0000 (09:01 -0400)]
Fix single flip test
The single flip test requires to keep track of parity evolution across the loop
iterations. Keep it as a local variable so we don't end up adding unexisting
dependencies.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 20 May 2009 04:25:17 +0000 (00:25 -0400)]
Fix urcu controldataflow model remote barriers
Need to split the pointer read from the data access to allow the writer to issue
a memory barrier (actually more than one) to let the single flip race occur.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 19 May 2009 22:11:12 +0000 (18:11 -0400)]
Document update in urcu.spin header
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 19 May 2009 22:07:08 +0000 (18:07 -0400)]
Add extended urcu model with ooo mem and instruction scheduling
Here is the new model I worked on for the past weeks. It models :
- out-of-order memory accesses.
- instruction scheduling by the CPU on the write and read sides.
The model as committed in the repository at
formal-model/urcu-controldataflow
models the urcu with memory barriers on the read-side. It works exactly
as expected. mb() on the read-side is enabled when we have this in
the DEFINES file :
//#define REMOTE_BARRIERS (commented out)
To run all tests, just fire :
make
(with spin 5.1.7 here. 5.2.0 has a bug with arrays of size 1)
Verification summary
asserts.log:State-vector 64 byte, depth reached 2801, errors: 0
urcu_free.log:State-vector 88 byte, depth reached 3302, errors: 0
urcu_free_no_mb.log:State-vector 88 byte, depth reached 24407, errors: 1
urcu_free_single_flip.log:State-vector 88 byte, depth reached 2904, errors: 1
urcu_progress_reader.log:State-vector 80 byte, depth reached 3353, errors: 0
urcu_progress_writer_error.log:State-vector 80 byte, depth reached 8035, errors: 1
urcu_progress_writer.log:State-vector 80 byte, depth reached 3348, errors: 0
However, I still have a problem modeling the signal-based barriers.
(remove comment from the define)
make urcu_free_single_flip should generate an error (just like it does
with the reader-mb() case), but it does not. I think it's caused by
added serialization due to the writer waiting on the reader barriers.
Normally, this model should behave similarly to yours : it should honor
the barrier requests before each read-side instruction IIF the
instruction execution order is in program order.
I'm pretty sure I missed something obvious, but I think it's time I
share the model I have with you so you might help me spot what I missed.
It may be as simple as an incorrect instruction scheduling dependency
too.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 19 May 2009 17:37:03 +0000 (13:37 -0400)]
Support gcc which does not support constructor attribute
- Add call to urcu_init from reader thread registration.
- Try to move the constructor and destructor attribute to the prototype, in case
gcc has problems with these attributes used with the function definition.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Steven Munroe [Tue, 19 May 2009 17:14:53 +0000 (13:14 -0400)]
Fix opensuse powerpc build
I gave this code a spin on a G5 (PPC970) OpenSuse 10.3 system and
encountered same issues that should fix fot tyou next update.
The liburcu make system sis not set up for biarch (32-/64-bit) builds on
PPC. SLES10/OpenSUSE-10.3 is a default 32-bit, 64-bit capable system. To
build a 64-bit you need to insert -m64 for all compiles and link
operations. Also for 64-bit make install should move liburcu.so
to /usr/lib64 not /usr/lib. This is required to FSB complience. Is
worked around this by copying Makefile to Makefile64 and made the
required changes there.
For SLES11 we changed to to a 64-bit default and 32-bit capable system.
In either case you need to be able to build both 32-/64-bit liburcu.so
on same systems and need to insure that make install is appropriate.
Also I found that __SIZEOF_LONG__ was not defined and resulted in a
sigill on PPC64. I suspect this is XLC specific and you need solution
that works for GCC builds as well.
I have attached a patch that implement these change for your review.
With this patch I can build liburcu and run the tests successfully.
Finally when I build 32-bit (default for OpenSUSE 10) I get a unhandled
SIGUSER1. I ran out of weekend before I could figure that out.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 16 May 2009 21:27:06 +0000 (17:27 -0400)]
Document thread registration in urcu.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 16 May 2009 21:25:18 +0000 (17:25 -0400)]
Document rcu_register_thread in README
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 15 May 2009 22:35:40 +0000 (18:35 -0400)]
Update ooo mem model comments
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 15 May 2009 20:35:57 +0000 (16:35 -0400)]
Remove old memory models
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 15 May 2009 20:31:18 +0000 (16:31 -0400)]
Update out of order memory models to include instruction scheduling
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 15 May 2009 02:09:24 +0000 (22:09 -0400)]
Move reader barrier within if statement for outermost nesting
Innermost nesting levels do not need this barrier. Slight runtime cost when
compiling with reader barriers in place. Does not change anything when using the
signal-based scheme.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
This page took 0.051087 seconds and 4 git commands to generate.