qemu-e2k/include/qemu
Emilio G. Cota fe9959a275 qsp: QEMU's Synchronization Profiler
The goal of this module is to profile synchronization primitives (i.e.
mutexes, recursive mutexes and condition variables) so that scalability
issues can be quickly diagnosed.

Sync primitives are profiled by QSP based on the vaddr of the object accessed
as well as the call site (file:line_nr). That means the same object called
from two different call sites will be tracked in separate entries, which
might be reported together or separately (see subsequent commit on
call site coalescing).

Some perf numbers:

Host: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
Command: taskset -c 0 tests/atomic_add-bench -d 5 -m

- Before: 54.80 Mops/s
- After:  54.75 Mops/s

That is, a negligible slowdown due to the now indirect call to
qemu_mutex_lock. Note that using a branch instead of an indirect
call introduces a more severe slowdown (53.65 Mops/s, i.e. 2% slowdown).

Enabling the profiler (with -p, added in this series) is more interesting:

- No profiling: 54.75 Mops/s
- W/ profiling: 12.53 Mops/s

That is, a 4.36X slowdown.

We can break down this slowdown by removing the get_clock calls or
the entry lookup:

- No profiling:     54.75 Mops/s
- W/o get_clock:    25.37 Mops/s
- W/o entry lookup: 19.30 Mops/s
- W/ profiling:     12.53 Mops/s

Signed-off-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2018-08-23 18:46:25 +02:00
..
acl.h
atomic.h atomic.h: Work around gcc spurious "unused value" warning 2018-05-10 18:10:57 +01:00
base64.h
bcd.h
bitmap.h
bitops.h
bswap.h bswap: Add new stn_*_p() and ldn_*_p() memory access functions 2018-06-15 15:23:34 +01:00
buffer.h
compiler.h compiler: add a sizeof_field() macro 2018-06-27 13:01:40 +01:00
config-file.h
coroutine_int.h coroutine: avoid co_queue_wakeup recursion 2018-03-27 13:05:28 +01:00
coroutine.h
cpuid.h
crc32c.h
cutils.h cutils: Do not include "qemu/units.h" directly 2018-07-02 15:41:17 +02:00
envlist.h
error-report.h
event_notifier.h
fifo8.h
fifo32.h
fprintf-fn.h
futex.h
hbitmap.h hbitmap: Add @advance param to hbitmap_iter_next() 2018-06-18 17:04:55 +02:00
help_option.h
host-utils.h
id.h
int128.h
iov.h
iova-tree.h util: remove redundant include of glib.h and add osdep.h 2018-06-29 12:22:28 +01:00
jhash.h
job.h job: Add job_progress_increase_remaining() 2018-06-18 17:05:11 +02:00
lockable.h lockable: workaround GCC link issue with ASAN 2018-03-06 14:01:27 +01:00
log-for-trace.h log-for-trace.h: Split out parts of log.h used by trace.h 2018-03-12 11:10:20 +00:00
log.h tcg: Optionally log FPU state in TCG -d cpu logging 2018-05-15 14:58:44 +01:00
main-loop.h main-loop: document IOCanReadHandler 2018-06-28 19:05:30 +02:00
memfd.h memfd: fix vhost-user-test on non-memfd capable host 2018-04-09 12:57:06 +02:00
mmap-alloc.h
module.h audio: add module loading support 2018-03-12 11:18:26 +01:00
notify.h
option_int.h
option.h opts: don't silently truncate long option values 2018-05-09 00:13:39 +02:00
osdep.h osdep: work around Coverity parsing errors 2018-06-28 19:05:34 +02:00
path.h
pmem.h migration/ram: ensure write persistence on loading all data to PMEM. 2018-08-10 13:29:39 +03:00
processor.h
qdist.h
qht.h qsp: QEMU's Synchronization Profiler 2018-08-23 18:46:25 +02:00
qsp.h qsp: QEMU's Synchronization Profiler 2018-08-23 18:46:25 +02:00
queue.h queue: add QSIMPLEQ_PREPEND() 2018-03-27 13:05:28 +01:00
range.h
ratelimit.h ratelimit: don't align wait time with slices 2018-02-15 09:39:49 +00:00
rcu_queue.h
rcu.h membarrier: introduce qemu/sys_membarrier.h 2018-03-12 16:12:47 +01:00
readline.h
seqlock.h seqlock: constify seqlock_read_begin 2018-08-23 18:46:25 +02:00
sockets.h sockets: move fd_is_socket() into common sockets code 2018-03-13 18:06:06 +00:00
stats64.h
sys_membarrier.h membarrier: add --enable-membarrier 2018-03-12 16:12:47 +01:00
systemd.h
thread-posix.h qsp: QEMU's Synchronization Profiler 2018-08-23 18:46:25 +02:00
thread-win32.h qsp: QEMU's Synchronization Profiler 2018-08-23 18:46:25 +02:00
thread.h qsp: QEMU's Synchronization Profiler 2018-08-23 18:46:25 +02:00
throttle-options.h
throttle.h Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
timed-average.h
timer.h replay: save prior value of the host clock 2018-03-12 16:12:50 +01:00
typedefs.h typedefs: add QJSON 2018-06-15 14:40:56 +01:00
unicode.h
units.h include: Add IEC binary prefixes in "qemu/units.h" 2018-07-02 14:45:23 +02:00
uri.h
uuid.h
vfio-helpers.h
xattr.h