[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-Devel][PATCH 3/3] Adding command line option to l
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [Qemu-Devel][PATCH 3/3] Adding command line option to linux-user. |
Date: |
Mon, 17 Jun 2019 12:30:29 +0100 |
User-agent: |
mu4e 1.3.2; emacs 26.1 |
[added Markus to Cc for his view on options]
vandersonmr <address@hidden> writes:
> Added -execfreq to enable execution frequency counting and dump
> all the TB's addresses and their execution frequency at the end
> of the execution.
>
> Signed-off-by: vandersonmr <address@hidden>
This works well enough but we are going to need a way to enable this for
softmmu as well. The preference for that is to add a option group to
qemu-options.hx which will allow a number of related options to be
grouped together.
The last thing that was added was the thread=multi flag to -accel
tcg,thread=multi but unfortunately the -accel option is very much a
softmmu only option group.
Maybe it's time to add a -tcg option for all the various options so we
can have (and are likely to add)?:
-tcg tbcount=true
-tcg tbcount=true,tbstats=file,file=output.txt
-tcg tbcount=true,tbstats=chardev,id=statschar
There are going to future enhancements we might consider:
-tcg jitperf=/tmp/perf.map
A long time in the future we may even have:
-tcg multiexitblocks=true
until it defaults to true and the knob is just there to turn it off.
The closest example of an option group shared between linux-user and
softmmu is the trace code. Both builds do a:
qemu_add_opts(&qemu_trace_opts);
(why can't this be done by module init code?)
And then they can call the general qemu_opts parser on the top level
option:
trace_opt_parse(arg);
So maybe we need to bite the bullet and create tcg/tcg-options.c and put
our tweaking machinery in there (and the real location of
enable_freq_count)?
Markus do you have a view?
> ---
> linux-user/exit.c | 5 +++++
> linux-user/main.c | 7 +++++++
> 2 files changed, 12 insertions(+)
>
> diff --git a/linux-user/exit.c b/linux-user/exit.c
> index bdda720553..0c6a2f2d5b 100644
> --- a/linux-user/exit.c
> +++ b/linux-user/exit.c
> @@ -26,8 +26,13 @@
> extern void __gcov_dump(void);
> #endif
>
> +extern bool enable_freq_count;
> +
> void preexit_cleanup(CPUArchState *env, int code)
> {
> + if (enable_freq_count) {
> + tb_dump_all_exec_freq();
> + }
> #ifdef TARGET_GPROF
> _mcleanup();
> #endif
> diff --git a/linux-user/main.c b/linux-user/main.c
> index 1bf7155670..ece2d8bd8b 100644
> --- a/linux-user/main.c
> +++ b/linux-user/main.c
> @@ -388,6 +388,11 @@ static void handle_arg_trace(const char *arg)
> trace_file = trace_opt_parse(arg);
> }
>
> +static void handle_arg_execfreq(const char *arg)
> +{
> + enable_freq_count = true;
> +}
> +
> struct qemu_argument {
> const char *argv;
> const char *env;
> @@ -439,6 +444,8 @@ static const struct qemu_argument arg_table[] = {
> "", "Seed for pseudo-random number generator"},
> {"trace", "QEMU_TRACE", true, handle_arg_trace,
> "", "[[enable=]<pattern>][,events=<file>][,file=<file>]"},
> + {"execfreq", "QEMU_EXEC_FREQ", false, handle_arg_execfreq,
> + "", "enable and dump TB's execution frequency counting"},
> {"version", "QEMU_VERSION", false, handle_arg_version,
> "", "display version information and exit"},
> {NULL, NULL, false, NULL, NULL, NULL}
--
Alex Bennée
- [Qemu-devel] [PATCH 0/3] Collecting TB Execution Frequency, vandersonmr, 2019/06/14
- [Qemu-devel] [Qemu-Devel][PATCH 1/3] Adding an optional tb execution counter., vandersonmr, 2019/06/14
- [Qemu-devel] [Qemu-Devel][PATCH 2/3] Saving counters between tb_flush events., vandersonmr, 2019/06/14
- [Qemu-devel] [Qemu-Devel][PATCH 3/3] Adding command line option to linux-user., vandersonmr, 2019/06/14
- Re: [Qemu-devel] [PATCH 0/3] Collecting TB Execution Frequency, no-reply, 2019/06/14
- Re: [Qemu-devel] [PATCH 0/3] Collecting TB Execution Frequency, Alex Bennée, 2019/06/17
- Re: [Qemu-devel] [PATCH 0/3] Collecting TB Execution Frequency, Alex Bennée, 2019/06/17