Commit b67d9a52d4720ef56d4fc494538e98e9a1ef5717
1 parent
a23a9ec6
TCG profiler clean up
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4538 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
12 additions
and
77 deletions
cpu-all.h
| ... | ... | @@ -1063,19 +1063,6 @@ extern int64_t dev_time; |
| 1063 | 1063 | extern int64_t kqemu_ret_int_count; |
| 1064 | 1064 | extern int64_t kqemu_ret_excp_count; |
| 1065 | 1065 | extern int64_t kqemu_ret_intr_count; |
| 1066 | - | |
| 1067 | -extern int64_t dyngen_tb_count1; | |
| 1068 | -extern int64_t dyngen_tb_count; | |
| 1069 | -extern int64_t dyngen_op_count; | |
| 1070 | -extern int64_t dyngen_old_op_count; | |
| 1071 | -extern int64_t dyngen_tcg_del_op_count; | |
| 1072 | -extern int dyngen_op_count_max; | |
| 1073 | -extern int64_t dyngen_code_in_len; | |
| 1074 | -extern int64_t dyngen_code_out_len; | |
| 1075 | -extern int64_t dyngen_interm_time; | |
| 1076 | -extern int64_t dyngen_code_time; | |
| 1077 | -extern int64_t dyngen_restore_count; | |
| 1078 | -extern int64_t dyngen_restore_time; | |
| 1079 | 1066 | #endif |
| 1080 | 1067 | |
| 1081 | 1068 | #endif /* CPU_ALL_H */ | ... | ... |
exec.c
| ... | ... | @@ -36,6 +36,7 @@ |
| 36 | 36 | #include "cpu.h" |
| 37 | 37 | #include "exec-all.h" |
| 38 | 38 | #include "qemu-common.h" |
| 39 | +#include "tcg.h" | |
| 39 | 40 | #if defined(CONFIG_USER_ONLY) |
| 40 | 41 | #include <qemu.h> |
| 41 | 42 | #endif |
| ... | ... | @@ -3010,45 +3011,7 @@ void dump_exec_info(FILE *f, |
| 3010 | 3011 | cpu_fprintf(f, "TB flush count %d\n", tb_flush_count); |
| 3011 | 3012 | cpu_fprintf(f, "TB invalidate count %d\n", tb_phys_invalidate_count); |
| 3012 | 3013 | cpu_fprintf(f, "TLB flush count %d\n", tlb_flush_count); |
| 3013 | -#ifdef CONFIG_PROFILER | |
| 3014 | - { | |
| 3015 | - int64_t tot; | |
| 3016 | - tot = dyngen_interm_time + dyngen_code_time; | |
| 3017 | - cpu_fprintf(f, "JIT cycles %" PRId64 " (%0.3f s at 2.4 GHz)\n", | |
| 3018 | - tot, tot / 2.4e9); | |
| 3019 | - cpu_fprintf(f, "translated TBs %" PRId64 " (aborted=%" PRId64 " %0.1f%%)\n", | |
| 3020 | - dyngen_tb_count, | |
| 3021 | - dyngen_tb_count1 - dyngen_tb_count, | |
| 3022 | - dyngen_tb_count1 ? (double)(dyngen_tb_count1 - dyngen_tb_count) / dyngen_tb_count1 * 100.0 : 0); | |
| 3023 | - cpu_fprintf(f, "avg ops/TB %0.1f max=%d\n", | |
| 3024 | - dyngen_tb_count ? (double)dyngen_op_count / dyngen_tb_count : 0, dyngen_op_count_max); | |
| 3025 | - cpu_fprintf(f, "old ops/total ops %0.1f%%\n", | |
| 3026 | - dyngen_op_count ? (double)dyngen_old_op_count / dyngen_op_count * 100.0 : 0); | |
| 3027 | - cpu_fprintf(f, "deleted ops/TB %0.2f\n", | |
| 3028 | - dyngen_tb_count ? | |
| 3029 | - (double)dyngen_tcg_del_op_count / dyngen_tb_count : 0); | |
| 3030 | - cpu_fprintf(f, "cycles/op %0.1f\n", | |
| 3031 | - dyngen_op_count ? (double)tot / dyngen_op_count : 0); | |
| 3032 | - cpu_fprintf(f, "cycles/in byte %0.1f\n", | |
| 3033 | - dyngen_code_in_len ? (double)tot / dyngen_code_in_len : 0); | |
| 3034 | - cpu_fprintf(f, "cycles/out byte %0.1f\n", | |
| 3035 | - dyngen_code_out_len ? (double)tot / dyngen_code_out_len : 0); | |
| 3036 | - if (tot == 0) | |
| 3037 | - tot = 1; | |
| 3038 | - cpu_fprintf(f, " gen_interm time %0.1f%%\n", | |
| 3039 | - (double)dyngen_interm_time / tot * 100.0); | |
| 3040 | - cpu_fprintf(f, " gen_code time %0.1f%%\n", | |
| 3041 | - (double)dyngen_code_time / tot * 100.0); | |
| 3042 | - cpu_fprintf(f, "cpu_restore count %" PRId64 "\n", | |
| 3043 | - dyngen_restore_count); | |
| 3044 | - cpu_fprintf(f, " avg cycles %0.1f\n", | |
| 3045 | - dyngen_restore_count ? (double)dyngen_restore_time / dyngen_restore_count : 0); | |
| 3046 | - { | |
| 3047 | - extern void dump_op_count(void); | |
| 3048 | - dump_op_count(); | |
| 3049 | - } | |
| 3050 | - } | |
| 3051 | -#endif | |
| 3014 | + tcg_dump_info(f, cpu_fprintf); | |
| 3052 | 3015 | } |
| 3053 | 3016 | |
| 3054 | 3017 | #if !defined(CONFIG_USER_ONLY) | ... | ... |
translate-all.c
| ... | ... | @@ -48,21 +48,6 @@ target_ulong gen_opc_jump_pc[2]; |
| 48 | 48 | uint32_t gen_opc_hflags[OPC_BUF_SIZE]; |
| 49 | 49 | #endif |
| 50 | 50 | |
| 51 | -#ifdef CONFIG_PROFILER | |
| 52 | -int64_t dyngen_tb_count1; | |
| 53 | -int64_t dyngen_tb_count; | |
| 54 | -int64_t dyngen_op_count; | |
| 55 | -int64_t dyngen_old_op_count; | |
| 56 | -int64_t dyngen_tcg_del_op_count; | |
| 57 | -int dyngen_op_count_max; | |
| 58 | -int64_t dyngen_code_in_len; | |
| 59 | -int64_t dyngen_code_out_len; | |
| 60 | -int64_t dyngen_interm_time; | |
| 61 | -int64_t dyngen_code_time; | |
| 62 | -int64_t dyngen_restore_count; | |
| 63 | -int64_t dyngen_restore_time; | |
| 64 | -#endif | |
| 65 | - | |
| 66 | 51 | /* XXX: suppress that */ |
| 67 | 52 | unsigned long code_gen_max_block_size(void) |
| 68 | 53 | { |
| ... | ... | @@ -102,8 +87,8 @@ int cpu_gen_code(CPUState *env, TranslationBlock *tb, int *gen_code_size_ptr) |
| 102 | 87 | #endif |
| 103 | 88 | |
| 104 | 89 | #ifdef CONFIG_PROFILER |
| 105 | - dyngen_tb_count1++; /* includes aborted translations because of | |
| 106 | - exceptions */ | |
| 90 | + s->tb_count1++; /* includes aborted translations because of | |
| 91 | + exceptions */ | |
| 107 | 92 | ti = profile_getclock(); |
| 108 | 93 | #endif |
| 109 | 94 | tcg_func_start(s); |
| ... | ... | @@ -129,16 +114,16 @@ int cpu_gen_code(CPUState *env, TranslationBlock *tb, int *gen_code_size_ptr) |
| 129 | 114 | #endif |
| 130 | 115 | |
| 131 | 116 | #ifdef CONFIG_PROFILER |
| 132 | - dyngen_tb_count++; | |
| 133 | - dyngen_interm_time += profile_getclock() - ti; | |
| 134 | - dyngen_code_time -= profile_getclock(); | |
| 117 | + s->tb_count++; | |
| 118 | + s->interm_time += profile_getclock() - ti; | |
| 119 | + s->code_time -= profile_getclock(); | |
| 135 | 120 | #endif |
| 136 | 121 | gen_code_size = dyngen_code(s, gen_code_buf); |
| 137 | 122 | *gen_code_size_ptr = gen_code_size; |
| 138 | 123 | #ifdef CONFIG_PROFILER |
| 139 | - dyngen_code_time += profile_getclock(); | |
| 140 | - dyngen_code_in_len += tb->size; | |
| 141 | - dyngen_code_out_len += gen_code_size; | |
| 124 | + s->code_time += profile_getclock(); | |
| 125 | + s->code_in_len += tb->size; | |
| 126 | + s->code_out_len += gen_code_size; | |
| 142 | 127 | #endif |
| 143 | 128 | |
| 144 | 129 | #ifdef DEBUG_DISAS |
| ... | ... | @@ -196,8 +181,8 @@ int cpu_restore_state(TranslationBlock *tb, |
| 196 | 181 | gen_pc_load(env, tb, searched_pc, j, puc); |
| 197 | 182 | |
| 198 | 183 | #ifdef CONFIG_PROFILER |
| 199 | - dyngen_restore_time += profile_getclock() - ti; | |
| 200 | - dyngen_restore_count++; | |
| 184 | + s->restore_time += profile_getclock() - ti; | |
| 185 | + s->restore_count++; | |
| 201 | 186 | #endif |
| 202 | 187 | return 0; |
| 203 | 188 | } | ... | ... |