From: Anthony Liguori <aliguori@us.ibm.com>
To: Satoru Moriya <satoru.moriya@hds.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Cc: "dle-develop@lists.sourceforge.net"
<dle-develop@lists.sourceforge.net>,
"satoru.moriya.br@hitachi.com" <satoru.moriya.br@hitachi.com>,
Jan Kiszka <jan.kiszka@siemens.com>,
"mtosatti@redhat.com" <mtosatti@redhat.com>,
Tomoki Sekiyama <tomoki.sekiyama@hds.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Seiji Aguchi <seiji.aguchi@hds.com>
Subject: Re: [Qemu-devel] [PATCH v4] Add option to mlock qemu and guest memory
Date: Wed, 27 Mar 2013 10:18:00 -0500 [thread overview]
Message-ID: <87mwto98if.fsf@codemonkey.ws> (raw)
In-Reply-To: <8631DC5930FA9E468F04F3FD3A5D00721AFE9AE6@USINDEM103.corp.hds.com>
Satoru Moriya <satoru.moriya@hds.com> writes:
> In certain scenario, latency induced by paging is significant and
> memory locking is needed. Also, in the scenario with untrusted
> guests, latency improvement due to mlock is desired.
>
> This patch introduces a following new option to mlock guest and
> qemu memory:
>
> -realtime mlock=on|off
>
> Signed-off-by: Satoru Moriya <satoru.moriya@hds.com>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
> Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
This patch doesn't apply because you're sending it MIME encoded and the
patch has carriage returns in it. I think your mailer is badly munging
the patch.
Please send it via git-send-email directly from the repository.
Regards,
Anthony Liguori
> ---
> ChangeLog:
> v4
> - Update commit message
> v3
> - Modify os_mlock() to return error code
> - Update configure_realtime() to handle return value from os_mlock()
> - Change the variable name from is_mlock to enable_mlock in configure_realtime()
> - Rebase qemu version 1.4.50
>
> v2
> - Change option name from -mlock to -realtime mlock=on|off
> - Rebase qemu version 1.3.91
> - Update patch description
>
> include/sysemu/os-posix.h | 1 +
> include/sysemu/os-win32.h | 5 +++++
> os-posix.c | 12 ++++++++++++
> qemu-options.hx | 13 +++++++++++++
> vl.c | 34 ++++++++++++++++++++++++++++++++++
> 5 files changed, 65 insertions(+)
>
> diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h
> index 7f198e4..25d0b2a 100644
> --- a/include/sysemu/os-posix.h
> +++ b/include/sysemu/os-posix.h
> @@ -31,6 +31,7 @@ void os_set_proc_name(const char *s);
> void os_setup_signal_handling(void);
> void os_daemonize(void);
> void os_setup_post(void);
> +int os_mlock(void);
>
> typedef struct timeval qemu_timeval;
> #define qemu_gettimeofday(tp) gettimeofday(tp, NULL)
> diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
> index 71f5fa0..bf8523a 100644
> --- a/include/sysemu/os-win32.h
> +++ b/include/sysemu/os-win32.h
> @@ -106,4 +106,9 @@ static inline bool is_daemonized(void)
> return false;
> }
>
> +static inline int os_mlock(void)
> +{
> + return -ENOSYS;
> +}
> +
> #endif
> diff --git a/os-posix.c b/os-posix.c
> index 5c64518..d39261d 100644
> --- a/os-posix.c
> +++ b/os-posix.c
> @@ -363,3 +363,15 @@ bool is_daemonized(void)
> {
> return daemonize;
> }
> +
> +int os_mlock(void)
> +{
> + int ret = 0;
> +
> + ret = mlockall(MCL_CURRENT | MCL_FUTURE);
> + if (ret < 0) {
> + perror("mlockall");
> + }
> +
> + return ret;
> +}
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 06dd565..1ec9541 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -2569,6 +2569,19 @@ STEXI
> Do not start CPU at startup (you must type 'c' in the monitor).
> ETEXI
>
> +DEF("realtime", HAS_ARG, QEMU_OPTION_realtime,
> + "-realtime [mlock=on|off]\n"
> + " run qemu with realtime features\n"
> + " mlock=on|off controls mlock support (default: on)\n",
> + QEMU_ARCH_ALL)
> +STEXI
> +@item -realtime mlock=on|off
> +@findex -realtime
> +Run qemu with realtime features.
> +mlocking qemu and guest memory can be enabled via @option{mlock=on}
> +(enabled by default).
> +ETEXI
> +
> DEF("gdb", HAS_ARG, QEMU_OPTION_gdb, \
> "-gdb dev wait for gdb connection on 'dev'\n", QEMU_ARCH_ALL)
> STEXI
> diff --git a/vl.c b/vl.c
> index aeed7f4..71bbcf1 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -521,6 +521,18 @@ static QemuOptsList qemu_tpmdev_opts = {
> },
> };
>
> +static QemuOptsList qemu_realtime_opts = {
> + .name = "realtime",
> + .head = QTAILQ_HEAD_INITIALIZER(qemu_realtime_opts.head),
> + .desc = {
> + {
> + .name = "mlock",
> + .type = QEMU_OPT_BOOL,
> + },
> + { /* end of list */ }
> + },
> +};
> +
> const char *qemu_get_vm_name(void)
> {
> return qemu_name;
> @@ -1420,6 +1432,20 @@ static void smp_parse(const char *optarg)
> max_cpus = smp_cpus;
> }
>
> +static void configure_realtime(QemuOpts *opts)
> +{
> + bool enable_mlock;
> +
> + enable_mlock = qemu_opt_get_bool(opts, "mlock", true);
> +
> + if (enable_mlock) {
> + if (os_mlock() < 0) {
> + fprintf(stderr, "qemu: locking memory failed\n");
> + exit(1);
> + }
> + }
> +}
> +
> /***********************************************************/
> /* USB devices */
>
> @@ -2909,6 +2935,7 @@ int main(int argc, char **argv, char **envp)
> qemu_add_opts(&qemu_add_fd_opts);
> qemu_add_opts(&qemu_object_opts);
> qemu_add_opts(&qemu_tpmdev_opts);
> + qemu_add_opts(&qemu_realtime_opts);
>
> runstate_init();
>
> @@ -3878,6 +3905,13 @@ int main(int argc, char **argv, char **envp)
> exit(1);
> }
> break;
> + case QEMU_OPTION_realtime:
> + opts = qemu_opts_parse(qemu_find_opts("realtime"), optarg, 0);
> + if (!opts) {
> + exit(1);
> + }
> + configure_realtime(opts);
> + break;
> default:
> os_parse_cmd_args(popt->index, optarg);
> }
> --
> 1.7.11.7
next prev parent reply other threads:[~2013-03-27 15:18 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-26 15:05 [Qemu-devel] [PATCH v4] Add option to mlock qemu and guest memory Satoru Moriya
2013-03-27 15:18 ` Anthony Liguori [this message]
2013-03-28 4:43 ` Satoru Moriya
2013-04-02 15:03 ` Seiji Aguchi
2013-04-02 19:12 ` Anthony Liguori
2013-04-03 7:57 ` Markus Armbruster
2013-04-22 18:38 ` Anthony Liguori
-- strict thread matches above, loose matches on Subject: below --
2013-04-22 5:16 Chegu Vinod
2013-04-23 3:47 ` Satoru Moriya
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mwto98if.fsf@codemonkey.ws \
--to=aliguori@us.ibm.com \
--cc=dle-develop@lists.sourceforge.net \
--cc=jan.kiszka@siemens.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=satoru.moriya.br@hitachi.com \
--cc=satoru.moriya@hds.com \
--cc=seiji.aguchi@hds.com \
--cc=tomoki.sekiyama@hds.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.