QEMU With E2K User Support
Go to file
Alexandre Derumier 7b01cb974f 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>
2015-09-09 15:34:55 +02:00
audio ossaudio: fix memory leak 2015-07-08 13:11:01 +02:00
backends hostmem: Fix qemu_opt_get_bool() crash in host_memory_backend_init() 2015-07-22 15:09:25 -03:00
block block/iscsi: validate block size returned from target 2015-09-07 18:14:03 +02:00
bsd-user linux-user: remove --enable-guest-base/--disable-guest-base 2015-08-24 11:14:17 -07:00
crypto crypto: fix built-in AES decrypt function 2015-07-27 12:22:01 +02:00
default-configs smbios: move smbios code into a common folder 2015-08-13 14:08:30 +03:00
disas disas/arm-a64: Add missing compiler attribute GCC_FMT_ATTR 2015-07-21 11:18:45 +01:00
docs AioContext: optimize clearing the EventNotifier 2015-07-22 12:41:40 +01:00
dtc@65cc4d2748 dtc: Update dtc / libfdt submodule to version 1.4.0 2015-06-03 23:56:49 +02:00
fpu target-s390x: define default NaN values 2015-06-05 01:37:58 +02:00
fsdev virtfs-proxy-helper: fail gracefully if socket path is too long 2015-06-16 20:32:29 +05:30
gdb-xml gdb-xml: Include XML for s390 vector registers 2015-05-27 17:52:03 +02:00
hw vhost-scsi: fix wrong vhost-scsi firmware path 2015-09-09 15:34:55 +02:00
include cutils: Add qemu_strtoull() wrapper 2015-09-09 15:34:54 +02:00
libcacard libcacard: pkgconfig: tidy dependent libs 2015-06-23 19:57:28 +03:00
libdecnumber remove libdecnumber/dpd/decimal128Local.h 2015-06-23 19:57:27 +03:00
linux-headers linux-headers: Update to 4.2-rc1 2015-07-06 17:59:01 +02:00
linux-user linux-user: call rcu_(un)register_thread on pthread_(exit|create) 2015-09-09 15:34:54 +02:00
migration migration: Fix global state with Xen. 2015-08-03 16:13:23 +00:00
net net: Flush queued packets when guest resumes 2015-07-20 18:11:24 +01:00
pc-bios pseries: Update SLOF firmware image to qemu-slof-20150429 2015-07-07 17:44:49 +02:00
pixman@87eea99e44 pixman: update internal copy to pixman-0.32.6 2014-09-15 08:14:19 +02:00
po po: fix conflict with %.mo rule in rules.mak 2014-09-26 13:35:08 +02:00
qapi qapi/qmp-event.c: Don't manually include os-win32.h/os-posix.h 2015-08-19 16:29:53 +01:00
qga qga: fixed versions for guest bus types in qapi-schema 2015-07-21 14:36:06 -05:00
qobject Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
qom tcg: synchronize cpu->exit_request and cpu->tcg_exit_req accesses 2015-09-09 15:34:53 +02:00
roms pseries: Update SLOF firmware image to qemu-slof-20150429 2015-07-07 17:44:49 +02:00
scripts add macro file for coccinelle 2015-09-09 15:34:55 +02:00
slirp qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
stubs main-loop: introduce qemu_mutex_iothread_locked 2015-07-01 15:45:50 +02:00
target-alpha tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-arm target-arm: Implement AArch64 TLBI operations on IPAs 2015-08-25 16:18:33 +01:00
target-cris tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-i386 target-i386: Remove x86_cpu_compat_set_features() 2015-08-13 14:08:25 +03:00
target-lm32 cpu-exec: Purge all uses of ENV_GET_CPU() 2015-07-09 15:20:40 +02:00
target-m68k tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-microblaze tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-mips tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-moxie cpu-exec: Purge all uses of ENV_GET_CPU() 2015-07-09 15:20:40 +02:00
target-openrisc tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-ppc cpu-exec: Purge all uses of ENV_GET_CPU() 2015-07-09 15:20:40 +02:00
target-s390x Added generic panic handler qemu_system_guest_panicked() 2015-09-07 18:14:03 +02:00
target-sh4 tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-sparc tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-tricore tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
target-unicore32 cpu-exec: Purge all uses of ENV_GET_CPU() 2015-07-09 15:20:40 +02:00
target-xtensa tcg: Remove tcg_gen_trunc_i64_i32 2015-08-24 11:10:54 -07:00
tcg s390: fix softmmu compilation 2015-08-28 16:05:24 +01:00
tests cutils: Add qemu_strtoull() wrapper 2015-09-09 15:34:54 +02:00
trace Remove superfluous '\n' around error_report() 2015-03-10 08:15:33 +03:00
ui vnc: fix memory corruption (CVE-2015-5225) 2015-08-26 17:54:33 +02:00
util cutils: Add qemu_strtoull() wrapper 2015-09-09 15:34:54 +02:00
.exrc qemu: add .exrc 2012-09-07 09:02:44 +03:00
.gitignore gitignore: Ignore shader generated files 2015-07-27 22:44:47 +03:00
.gitmodules PPC: Add u-boot firmware for e500 2014-06-16 13:24:35 +02:00
.mailmap Update mailmap 2013-09-05 09:40:31 -05:00
.travis.yml .travis.yml: Add "--enable-modules" 2015-01-26 12:27:05 +01:00
CODING_STYLE CODING_STYLE: update mixed declaration rules 2015-09-09 15:34:54 +02:00
COPYING COPYING: update from FSF 2008-10-12 17:54:42 +00:00
COPYING.LIB Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
Changelog Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
HACKING HACKING: Document vaddr type usage 2013-07-23 02:41:31 +02:00
LICENSE vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00
MAINTAINERS MAINTAINERS: Add ZynqMP to MAINTAINERS file 2015-08-25 15:45:07 +01:00
Makefile make: Clean build messages 2015-07-27 22:44:47 +03:00
Makefile.objs crypto: introduce new module for computing hash digests 2015-07-07 12:04:07 +02:00
Makefile.target Makefile.target: include top level build dir in vpath 2015-09-09 15:34:54 +02:00
README Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
VERSION Open 2.5 development tree 2015-08-11 23:15:55 +01:00
accel.c accel: Create accel object when initializing machine 2014-10-09 15:36:14 +02:00
aio-posix.c AioContext: optimize clearing the EventNotifier 2015-07-22 12:41:40 +01:00
aio-win32.c AioContext: optimize clearing the EventNotifier 2015-07-22 12:41:40 +01:00
arch_init.c smbios: move smbios code into a common folder 2015-08-13 14:08:30 +03:00
async.c AioContext: force event loop iteration using BH 2015-07-29 10:02:06 +01:00
balloon.c Include monitor/monitor.h exactly where needed 2015-06-22 18:20:41 +02:00
block.c block: Fix backing file child when modifying graph 2015-07-14 17:15:23 +02:00
blockdev-nbd.c Include monitor/monitor.h exactly where needed 2015-06-22 18:20:41 +02:00
blockdev.c throttle: refuse bps_max/iops_max without bps/iops 2015-08-05 12:53:48 +01:00
blockjob.c blockjob: add block_job_release function 2015-07-07 14:27:14 +01:00
bootdevice.c misc: fix typos in copyright declaration 2015-03-26 14:21:43 +01:00
bt-host.c sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
bt-vhci.c sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
configure configure: Add support for jemalloc 2015-09-09 15:34:55 +02:00
coroutine-gthread.c glib-compat.h: add new thread API emulation on top of pre-2.31 API 2014-06-10 07:44:01 +02:00
coroutine-sigaltstack.c coroutine-sigaltstack: Change jmp_buf to sigjmp_buf 2014-11-11 11:07:55 +03:00
coroutine-ucontext.c coroutine-ucontext: use __thread 2015-01-13 13:43:28 +00:00
coroutine-win32.c coroutine-win32.c: Add noinline attribute to work around gcc bug 2014-06-26 14:08:14 +01:00
cpu-exec.c tcg: signal-free qemu_cpu_kick 2015-09-09 15:34:54 +02:00
cpus.c tcg: signal-free qemu_cpu_kick 2015-09-09 15:34:54 +02:00
cputlb.c cputlb: Add functions for flushing TLB for a single MMU index 2015-08-25 16:18:33 +01:00
device-hotplug.c pci-hotplug-old: Has been dead for five major releases, bury 2015-03-01 12:37:54 +01:00
device_tree.c device_tree: Fix a typo 2015-07-27 22:44:47 +03:00
disas.c disas: Defeature print_target_address 2015-08-14 23:40:32 +02:00
dma-helpers.c range: remove useless inclusions 2015-04-30 16:05:48 +03:00
dump.c Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
exec.c remove qemu/tls.h 2015-09-09 15:34:53 +02:00
gdbstub.c use qemu_cpu_kick instead of cpu_exit or qemu_cpu_kick_thread 2015-09-09 15:34:54 +02:00
hmp-commands.hx qmp/hmp: add rocker device support 2015-06-12 13:42:17 +01:00
hmp.c qmp: Add optional bool "unmap" to drive-mirror 2015-07-02 10:06:23 +01:00
hmp.h qmp/hmp: add rocker device support 2015-06-12 13:42:17 +01:00
iohandler.c iohandler: Use aio API 2015-09-07 18:14:03 +02:00
ioport.c - miscellaneous cleanups for TCG (Emilio) and NBD (Bogdan) 2015-04-30 12:04:11 +01:00
iothread.c rcu: actually register threads that have RCU read-side critical sections 2015-07-24 13:57:45 +02:00
kvm-all.c VFIO updates for 2.4-rc0 2015-07-07 09:22:40 +01:00
kvm-stub.c kvm: some fixes to kvm_resamplefds_allowed 2015-07-06 12:15:14 -06:00
main-loop.c iohandler: Use aio API 2015-09-07 18:14:03 +02:00
memory.c Merge memory_region_init_reservation() into memory_region_init_io() 2015-08-13 11:26:21 +01:00
memory_mapping.c memory_mapping: Rework cpu related includes 2015-06-26 16:00:50 +02:00
module-common.c module: implement module loading 2014-02-20 13:14:18 +01:00
monitor.c osdep.h: Remove qemu_printf 2015-08-19 16:29:53 +01:00
nbd.c qemu-nbd: only send a limited number of errno codes on the wire 2015-05-08 14:45:11 +02:00
numa.c numa: Fix memory leak in numa_set_mem_node_id() 2015-07-15 16:57:50 -03:00
os-posix.c rcu: do not create thread in pthread_atfork callback 2015-04-01 10:06:38 +02:00
os-win32.c pidfile: stop making pidfile error a special case 2014-11-02 10:04:34 +03:00
page_cache.c xbzrle: rebuild the cache_is_cached function 2015-01-15 17:49:43 +05:30
qapi-schema.json qapi: add missing @ 2015-07-27 22:44:47 +03:00
qdev-monitor.c Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
qdict-test-data.txt Introduce QDict test data file 2009-09-04 09:37:34 -05:00
qemu-bridge-helper.c qemu-bridge-helper: Fix fd leak in main() 2014-06-27 10:39:10 +02:00
qemu-char.c qemu-char: Fix missed data on unix socket 2015-07-23 07:37:38 +02:00
qemu-coroutine-io.c coroutine-io: Return -errno in case of error 2015-03-18 12:07:21 +01:00
qemu-coroutine-lock.c coroutine: remove unnecessary parentheses in qemu_co_queue_empty 2015-04-30 16:05:49 +03:00
qemu-coroutine-sleep.c coroutine: Drop co_sleep_ns 2014-08-29 10:46:58 +01:00
qemu-coroutine.c coroutine: Clean up qemu_coroutine_enter() 2015-03-09 11:11:59 +01:00
qemu-doc.texi qemu-doc.texi: Fix capitalization error in OS X build instructions 2015-08-28 11:44:53 +01:00
qemu-img-cmds.hx qemu-img: Add progress output for amend 2014-11-03 11:41:48 +00:00
qemu-img.c Include qapi/qmp/qerror.h exactly where needed 2015-06-22 18:20:41 +02:00
qemu-img.texi qemu-img: Add progress output for amend 2014-11-03 11:41:48 +00:00
qemu-io-cmds.c qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
qemu-io.c qerror: Move #include out of qerror.h 2015-06-22 18:20:40 +02:00
qemu-log.c qemu-log: Correct help text of 'log cpu_reset' 2015-02-10 09:27:20 +03:00
qemu-nbd.c qemu-nbd: remove unnecessary qemu_notify_event() 2015-08-14 23:40:32 +02:00
qemu-nbd.texi nbd: Miscellaneous typo fixes. 2014-05-24 00:07:29 +04:00
qemu-options-wrapper.h vl.c: In qemu -h output, only print options for the arch we are running as 2011-12-19 10:27:33 -06:00
qemu-options.h vl.c: Move option generation logic into a wrapper file 2011-12-19 10:27:33 -06:00
qemu-options.hx qemu-doc: fix typos 2015-07-24 13:57:45 +02:00
qemu-seccomp.c seccomp: add mlockall to whitelist 2015-01-23 14:07:08 +01:00
qemu-tech.texi qemu-doc: fix typos 2015-07-24 13:57:45 +02:00
qemu-timer.c qemu-timer: initialize "timers_done_ev" to set 2015-07-22 12:41:32 +01:00
qemu.nsi nsis: Improved support for parallel installation of 32 and 64 bit code 2013-11-07 07:02:44 +01:00
qemu.sasl sasl: Avoid 'Could not find keytab file' in syslog 2014-03-15 13:54:18 +04:00
qjson.c QJSON: Use OBJECT_CHECK 2015-05-11 08:59:07 -04:00
qmp-commands.hx migration: Write documetation for events capabilites 2015-07-15 09:07:54 +02:00
qmp.c qmp: Add example usage of strto*l() qemu wrapper 2015-09-09 15:34:54 +02:00
qtest.c qtest: pre-buffer hex nibs 2015-05-22 15:58:22 -04:00
rules.mak make: load only required dependency files. 2015-08-13 14:08:25 +03:00
softmmu_template.h exec: drop cpu_can_do_io, just read cpu->can_do_io 2015-08-14 23:40:32 +02:00
spice-qemu-char.c spice: fix spice_chr_add_watch() pre-condition 2015-05-29 09:56:01 +02:00
tcg-runtime.c tcg: Push tcg-runtime routines into exec/helper-* 2014-05-28 09:33:54 -07:00
tci.c tcg: implement real ext_i32_i64 and extu_i32_i64 ops 2015-08-24 11:10:54 -07:00
thread-pool.c thread-pool: clean up thread_pool_completion_bh() 2015-04-28 15:36:09 +02:00
thunk.c linux-user: Allocate thunk size dynamically 2015-06-15 11:36:58 +03:00
tpm.c Include monitor/monitor.h exactly where needed 2015-06-22 18:20:41 +02:00
trace-events block/mirror: limit qiov to IOV_MAX elements 2015-08-06 04:41:09 -04:00
translate-all.c translate-all: remove obsolete comment about l1_map 2015-09-09 15:34:54 +02:00
translate-all.h translate-all: remove unnecessary argument to tb_invalidate_phys_range 2015-06-05 17:09:59 +02:00
user-exec.c osdep.h: Remove qemu_printf 2015-08-19 16:29:53 +01:00
version.rc Use qemu-project.org domain name 2013-10-11 09:34:56 -07:00
vl.c Added generic panic handler qemu_system_guest_panicked() 2015-09-07 18:14:03 +02:00
xen-common-stub.c accel: Move Xen registration code to xen-common.c 2014-10-04 08:59:15 +02:00
xen-common.c migration: Fix regression for xenfv and pc,accel=xen machine. 2015-08-03 16:13:40 +00:00
xen-hvm-stub.c xen: Remove xen_cmos_set_s3_resume() 2015-03-10 08:15:33 +03:00
xen-hvm.c xen-220615, more SOB lines 2015-06-23 17:46:20 +01:00
xen-mapcache.c xen: add a lock for the mapcache 2015-01-20 14:24:17 +00:00

README

Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org

- QEMU team