From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56949) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xlg1Q-00076a-He for qemu-devel@nongnu.org; Tue, 04 Nov 2014 10:27:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xlg1J-0004KL-Fm for qemu-devel@nongnu.org; Tue, 04 Nov 2014 10:27:52 -0500 Received: from static.88-198-71-155.clients.your-server.de ([88.198.71.155]:50765 helo=socrates.bennee.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xlg1J-0004K4-9m for qemu-devel@nongnu.org; Tue, 04 Nov 2014 10:27:45 -0500 References: <1414960121-18335-1-git-send-email-jcmvbkbc@gmail.com> From: Alex =?utf-8?Q?Benn=C3=A9e?= In-reply-to: <1414960121-18335-1-git-send-email-jcmvbkbc@gmail.com> Date: Tue, 04 Nov 2014 15:27:45 +0000 Message-ID: <87vbmvt28e.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH] tcg: add separate monitor command to dump opcode counters List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Filippov Cc: qemu-devel@nongnu.org, Richard Henderson Max Filippov writes: > Currently 'info jit' outputs half of the information to monitor and the > rest to qemu log. Dumping opcode counts to monitor as a part of 'info > jit' command doesn't sound useful. Add new monitor command 'info > opcount' that only dumps opcode counters. > > Signed-off-by: Max Filippov Reviewed-by: Alex Bennée > --- > include/exec/cpu-all.h | 1 + > monitor.c | 12 ++++++++++++ > tcg/tcg.c | 12 ++++++++---- > tcg/tcg.h | 1 + > translate-all.c | 5 +++++ > 5 files changed, 27 insertions(+), 4 deletions(-) > > diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h > index c085804..f02f96f 100644 > --- a/include/exec/cpu-all.h > +++ b/include/exec/cpu-all.h > @@ -335,6 +335,7 @@ extern RAMList ram_list; > #define TLB_MMIO (1 << 5) > > void dump_exec_info(FILE *f, fprintf_function cpu_fprintf); > +void dump_opcount_info(FILE *f, fprintf_function cpu_fprintf); > ram_addr_t last_ram_offset(void); > void qemu_mutex_lock_ramlist(void); > void qemu_mutex_unlock_ramlist(void); > diff --git a/monitor.c b/monitor.c > index 2d14f39..946f8fd 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -1043,6 +1043,11 @@ static void do_info_jit(Monitor *mon, const QDict *qdict) > dump_drift_info((FILE *)mon, monitor_fprintf); > } > > +static void do_info_opcount(Monitor *mon, const QDict *qdict) > +{ > + dump_opcount_info((FILE *)mon, monitor_fprintf); > +} > + > static void do_info_history(Monitor *mon, const QDict *qdict) > { > int i; > @@ -2736,6 +2741,13 @@ static mon_cmd_t info_cmds[] = { > .mhandler.cmd = do_info_jit, > }, > { > + .name = "opcount", > + .args_type = "", > + .params = "", > + .help = "show dynamic compiler opcode counters", > + .mhandler.cmd = do_info_opcount, > + }, > + { > .name = "kvm", > .args_type = "", > .params = "", > diff --git a/tcg/tcg.c b/tcg/tcg.c > index 7a84b87..6ff8b51 100644 > --- a/tcg/tcg.c > +++ b/tcg/tcg.c > @@ -2401,14 +2401,20 @@ static int tcg_reg_alloc_call(TCGContext *s, const TCGOpDef *def, > > static int64_t tcg_table_op_count[NB_OPS]; > > -static void dump_op_count(void) > +void tcg_dump_op_count(FILE *f, fprintf_function cpu_fprintf) > { > int i; > > for(i = INDEX_op_end; i < NB_OPS; i++) { > - qemu_log("%s %" PRId64 "\n", tcg_op_defs[i].name, tcg_table_op_count[i]); > + cpu_fprintf(f, "%s %" PRId64 "\n", tcg_op_defs[i].name, > + tcg_table_op_count[i]); > } > } > +#else > +void tcg_dump_op_count(FILE *f, fprintf_function cpu_fprintf) > +{ > + cpu_fprintf(f, "[TCG profiler not compiled]\n"); > +} > #endif > > > @@ -2620,8 +2626,6 @@ void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf) > s->restore_count); > cpu_fprintf(f, " avg cycles %0.1f\n", > s->restore_count ? (double)s->restore_time / s->restore_count : 0); > - > - dump_op_count(); > } > #else > void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf) > diff --git a/tcg/tcg.h b/tcg/tcg.h > index 7285f71..944b877 100644 > --- a/tcg/tcg.h > +++ b/tcg/tcg.h > @@ -610,6 +610,7 @@ int tcg_check_temp_count(void); > #endif > > void tcg_dump_info(FILE *f, fprintf_function cpu_fprintf); > +void tcg_dump_op_count(FILE *f, fprintf_function cpu_fprintf); > > #define TCG_CT_ALIAS 0x80 > #define TCG_CT_IALIAS 0x40 > diff --git a/translate-all.c b/translate-all.c > index ba5c840..8ccd2ed 100644 > --- a/translate-all.c > +++ b/translate-all.c > @@ -1645,6 +1645,11 @@ void dump_exec_info(FILE *f, fprintf_function cpu_fprintf) > tcg_dump_info(f, cpu_fprintf); > } > > +void dump_opcount_info(FILE *f, fprintf_function cpu_fprintf) > +{ > + tcg_dump_op_count(f, cpu_fprintf); > +} > + > #else /* CONFIG_USER_ONLY */ > > void cpu_interrupt(CPUState *cpu, int mask) -- Alex Bennée