Home
last modified time | relevance | path

Searched hist:"7 b01cb97" (Results 1 – 1 of 1) sorted by relevance

/openbmc/qemu/
H A Dconfigure7b01cb97 Fri Jun 19 05:56:58 CDT 2015 Alexandre Derumier <aderumier@odiso.com> configure: Add support for jemalloc

This adds "--enable-jemalloc" and "--disable-jemalloc" to allow linking
to jemalloc memory allocator.

We have already tcmalloc support,
but it seem to not working well with a lot of iothreads/disks.

The main problem is that tcmalloc use a shared thread cache of 16MB
by default.
With more threads, this cache is shared, and some bad garbage collections
can occur if the cache is too low.

It's possible to tcmalloc cache increase it with a env var:
TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES=256MB

With default 16MB, performances are really bad with more than 2 disks.
Increasing to 256MB, it's helping but still have problem with 16 disks/iothreads.

Jemalloc don't have performance problem with default configuration.

Here the benchmark results in iops of 1 qemu vm randread 4K iodepth=32,
with rbd block backend (librbd is doing a lot of memory allocation),
1 iothread by disk

glibc malloc
------------

1 disk 29052
2 disks 55878
4 disks 127899
8 disks 240566
15 disks 269976

jemalloc
--------

1 disk 41278
2 disks 75781
4 disks 195351
8 disks 294241
15 disks 298199

tcmalloc 2.2.1 default 16M cache
--------------------------------

1 disk 37911
2 disks 67698
4 disks 41076
8 disks 43312
15 disks 37569

tcmalloc : 256M cache
---------------------------

1 disk 33914
2 disks 58839
4 disks 148205
8 disks 213298
15 disks 218383

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Message-Id: <1434711418-20429-1-git-send-email-aderumier@odiso.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>