disable routing lock

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
java: add -XX:+UseMembar
mempool: erase page range using an iterator rather than a reference.

free_page_ranges is an intrusive set. erasing via a reference requires
iteration over reference equal_range under the hood, which means
traversing the tree to the leafs. Whereas erasing via an iterator
requires no such lookups so should be faster.
mempool: prevent across-CPU page stealing.

This addresses the reace which is mentioned in the comment. If the
thread doing add_page() is migrated before the preempt_lock is taken
it may feed the pool with a page coming from different CPU's page
buffer.

The fix is to embrace the body with migration-lock.
mempool: remove contention inside unfill_page_buffer()

This change reduces page buffer pressure caused by virtio-net
allocations, showign up as contention inside unfill_page_buffer() and
refill_page_buffer(). The virtio-net subsystem allocates pages on one
CPU which are then scattered across all other CPUs and freed to their
per-CPU buffers. To mitigate that, this change enables caching of
pages used by virtio-net.
mempool: remove contention inside free_different_cpu()

Fixes #308.

When the per-cpu-pair ring fills up, the freeing thread is blocked and
enters a synchronous object handoff. That synchronous handoff is cause
of contention. Instead of having a bounded ring we can link the
objects together in a lockfree-queue. This requires no extra space as
all state is kept inside the freed objects. Therefor the queue does
not need to be bounded and no blocking is needed.

Dead objects are collected in two situations. One is when the pool's
free list is empty upon alloc(). If a large number of objects would
accumulate, that alloc() could be noticeably delayed. To keep the
latency capped we also wake the per-CPU garbage collector once every
128 frees. That threshold was chosen so that the behavior would more
or less correspond to what was before.
tests: add test for malloc/free throughput across cores