Am 13.01.2015 um 18:52 schrieb Paolo Bonzini: > These are the minimal changes to adopt RCU and use it in memory_region_find > (and hence in virtio-blk-dataplane). Looks big, but two thirds of it > is documentation and tests. > > Please review! :)
Really Nice. This gives me a boost from 1000MB/sec to 1400MB/sec on my fio test. (4k block random reads on null block devices). perf shows me that pthread_mutex_lock and kernel spin locking contention (I have a 32cpu host) goes away. Christian > > Paolo > > Jan Kiszka (1): > memory: remove assertion on memory_region_destroy > > Paolo Bonzini (7): > tls: require compiler support for __thread > rcu: add rcu library > rcu: add rcutorture > rcu: allow nesting of rcu_read_lock/rcu_read_unlock > rcu: add call_rcu > memory: protect current_map by RCU > memory: avoid ref/unref in memory_region_find > > configure | 9 +- > docs/rcu.txt | 388 +++++++++++++++++++++++++++++++++++++++ > exec.c | 2 +- > hw/9pfs/virtio-9p-synth.c | 1 + > include/exec/memory.h | 5 + > include/qemu/atomic.h | 61 +++++++ > include/qemu/queue.h | 13 ++ > include/qemu/rcu.h | 155 ++++++++++++++++ > include/qemu/thread.h | 3 - > include/qemu/tls.h | 52 ------ > include/qom/cpu.h | 4 +- > memory.c | 60 +++---- > tests/Makefile | 11 +- > tests/rcutorture.c | 449 > ++++++++++++++++++++++++++++++++++++++++++++++ > tests/test-tls.c | 83 +++++++++ > util/Makefile.objs | 1 + > util/rcu.c | 290 ++++++++++++++++++++++++++++++ > 17 files changed, 1485 insertions(+), 102 deletions(-) > create mode 100644 docs/rcu.txt > create mode 100644 include/qemu/rcu.h > delete mode 100644 include/qemu/tls.h > create mode 100644 tests/rcutorture.c > create mode 100644 tests/test-tls.c > create mode 100644 util/rcu.c >