mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-25 17:08:36 -07:00
This is the payoff.
From perf record -g data of ubuntu 18 boot and shutdown:
BEFORE:
- 23.02% 2.82% qemu-system-aar [.] helper_lookup_tb_ptr
- 20.22% helper_lookup_tb_ptr
+ 10.05% tb_htable_lookup
- 9.13% cpu_get_tb_cpu_state
3.20% aa64_va_parameters_both
0.55% fp_exception_el
- 11.66% 4.74% qemu-system-aar [.] cpu_get_tb_cpu_state
- 6.96% cpu_get_tb_cpu_state
3.63% aa64_va_parameters_both
0.60% fp_exception_el
0.53% sve_exception_el
AFTER:
- 16.40% 3.40% qemu-system-aar [.] helper_lookup_tb_ptr
- 13.03% helper_lookup_tb_ptr
+ 11.19% tb_htable_lookup
0.55% cpu_get_tb_cpu_state
0.98% 0.71% qemu-system-aar [.] cpu_get_tb_cpu_state
0.87% 0.24% qemu-system-aar [.] rebuild_hflags_a64
Before, helper_lookup_tb_ptr is the second hottest function in the
application, consuming almost a quarter of the runtime. Within the
entire execution, cpu_get_tb_cpu_state consumes about 12%.
After, helper_lookup_tb_ptr has dropped to the fourth hottest function,
with consumption dropping to a sixth of the runtime. Within the
entire execution, cpu_get_tb_cpu_state has dropped below 1%, and the
supporting function to rebuild hflags also consumes about 1%.
Assertions are retained for --enable-debug-tcg.
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20191023150057.25731-25-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
||
|---|---|---|
| .. | ||
| a32-uncond.decode | ||
| a32.decode | ||
| arch_dump.c | ||
| arm-powerctl.c | ||
| arm-powerctl.h | ||
| arm-semi.c | ||
| arm_ldst.h | ||
| cpu-param.h | ||
| cpu-qom.h | ||
| cpu.c | ||
| cpu.h | ||
| cpu64.c | ||
| crypto_helper.c | ||
| debug_helper.c | ||
| gdbstub.c | ||
| gdbstub64.c | ||
| helper-a64.c | ||
| helper-a64.h | ||
| helper-sve.h | ||
| helper.c | ||
| helper.h | ||
| idau.h | ||
| internals.h | ||
| iwmmxt_helper.c | ||
| kvm-consts.h | ||
| kvm-stub.c | ||
| kvm.c | ||
| kvm32.c | ||
| kvm64.c | ||
| kvm_arm.h | ||
| m_helper.c | ||
| machine.c | ||
| Makefile.objs | ||
| monitor.c | ||
| neon_helper.c | ||
| op_addsub.h | ||
| op_helper.c | ||
| pauth_helper.c | ||
| psci.c | ||
| sve.decode | ||
| sve_helper.c | ||
| t16.decode | ||
| t32.decode | ||
| tlb_helper.c | ||
| trace-events | ||
| translate-a64.c | ||
| translate-a64.h | ||
| translate-sve.c | ||
| translate-vfp.inc.c | ||
| translate.c | ||
| translate.h | ||
| vec_helper.c | ||
| vfp-uncond.decode | ||
| vfp.decode | ||
| vfp_helper.c | ||