qemu-e2k/util
Yang Zhong 5a22ab7162 rcu: reduce more than 7MB heap memory by malloc_trim()
Since there are some issues in memory alloc/free machenism
in glibc for little chunk memory, if Qemu frequently
alloc/free little chunk memory, the glibc doesn't alloc
little chunk memory from free list of glibc and still
allocate from OS, which make the heap size bigger and bigger.

This patch introduce malloc_trim(), which will free heap
memory when there is no rcu call during rcu thread loop.
malloc_trim() can be enabled/disabled by --enable-malloc-trim/
--disable-malloc-trim in the Qemu configure command. The
default malloc_trim() is enabled for libc.

Below are test results from smaps file.
(1)without patch
55f0783e1000-55f07992a000 rw-p 00000000 00:00 0  [heap]
Size:              21796 kB
Rss:               14260 kB
Pss:               14260 kB

(2)with patch
55cc5fadf000-55cc61008000 rw-p 00000000 00:00 0  [heap]
Size:              21668 kB
Rss:                6940 kB
Pss:                6940 kB

Signed-off-by: Yang Zhong <yang.zhong@intel.com>
Message-Id: <1513775806-19779-1-git-send-email-yang.zhong@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2017-12-21 09:30:32 +01:00
..
acl.c
aio-posix.c aio-posix: drop QEMU_AIO_POLL_MAX_NS env var 2017-11-06 11:04:38 +00:00
aio-win32.c util/aio-win32: Only select on what we are actually waiting for 2017-07-17 15:58:37 +01:00
aiocb.c
async.c coroutine: abort if we try to schedule or enter a pending coroutine 2017-11-21 11:58:07 -05:00
base64.c
bitmap.c bitmap: provide to_le/from_le helpers 2017-09-22 14:11:25 +02:00
bitops.c bitmap: remove BITOP_WORD() 2017-09-22 14:11:23 +02:00
buffer.c
bufferiszero.c util: Introduce include/qemu/cpuid.h 2017-07-24 12:42:55 +01:00
cacheinfo.c configure: Drop AIX host support 2017-09-07 19:02:30 +01:00
compatfd.c
coroutine-sigaltstack.c
coroutine-ucontext.c
coroutine-win32.c
crc32c.c
cutils.c Convert remaining single line fprintf() to warn_report() 2017-09-19 16:20:49 +02:00
envlist.c
error.c error: Implement the warn and free Error functions 2017-07-13 13:50:19 +02:00
event_notifier-posix.c Remove/replace sysemu/char.h inclusion 2017-06-02 11:33:52 +04:00
event_notifier-win32.c
fifo8.c
getauxval.c
hbitmap.c hbitmap: add next_zero function 2017-12-18 10:54:13 -05:00
hexdump.c
host-utils.c
id.c
iohandler.c
iov.c
keyval.c qapi: Generate FOO_str() macro for QAPI enum FOO 2017-09-04 13:09:13 +02:00
lockcnt.c
log.c
main-loop.c Convert multi-line fprintf() to warn_report() 2017-09-19 14:09:34 +02:00
Makefile.objs util: move qemu_real_host_page_size/mask to osdep.h 2017-10-10 09:45:00 -07:00
memfd.c memfd: fix configure test 2017-12-20 22:29:26 +01:00
mmap-alloc.c sparc: Make sure we mmap at SHMLBA alignment 2017-12-15 15:26:24 +00:00
module.c
notify.c
osdep.c osdep: introduce qemu_mprotect_rwx/none 2017-10-24 13:53:42 -07:00
oslib-posix.c oslib-posix: Use sysctl(2) call to resolve exec_dir on NetBSD 2017-11-02 16:19:34 +00:00
oslib-win32.c block: rip out all traces of password prompting 2017-07-11 17:44:56 +02:00
pagesize.c util: move qemu_real_host_page_size/mask to osdep.h 2017-10-10 09:45:00 -07:00
path.c
qdist.c
qemu-config.c config: qemu_config_parse() return number of config groups 2017-10-09 23:21:52 -03:00
qemu-coroutine-io.c
qemu-coroutine-lock.c coroutine-lock: add qemu_co_rwlock_downgrade and qemu_co_rwlock_upgrade 2017-07-17 11:28:15 +08:00
qemu-coroutine-sleep.c coroutine: simplify co_aio_sleep_ns() prototype 2017-12-19 09:25:27 +00:00
qemu-coroutine.c coroutine: abort if we try to schedule or enter a pending coroutine 2017-11-21 11:58:07 -05:00
qemu-error.c error: Revert unwanted change of warning messages 2017-07-24 14:16:29 +02:00
qemu-openpty.c
qemu-option.c option: Drop unused get_param_value(), get_next_param_value() 2017-12-20 09:11:50 +01:00
qemu-progress.c
qemu-sockets.c sockets: remove obsolete code that updated listen address 2017-12-21 09:22:44 +01:00
qemu-thread-posix.c qemu-thread: fix races on threads that exit very quickly 2017-12-20 22:29:26 +01:00
qemu-thread-win32.c qemu-thread: Assert locks are initialized before using 2017-07-04 14:39:28 +02:00
qemu-timer-common.c
qemu-timer.c
qht.c
range.c
rcu.c rcu: reduce more than 7MB heap memory by malloc_trim() 2017-12-21 09:30:32 +01:00
readline.c
stats64.c util/stats64: Fix min/max comparisons 2017-11-15 09:34:51 +01:00
systemd.c
thread-pool.c
throttle.c throttle: Assert that bkt->max is valid in throttle_compute_wait() 2017-09-26 14:46:23 +02:00
timed-average.c
trace-events docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
unicode.c
uri.c
uuid.c