qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Denis V. Lunev" <den@openvz.org>
Cc: Igor Redko <redkoi@virtuozzo.com>,
	quintela@redhat.com, qemu-devel@nongnu.org, annam@virtuozzo.com,
	amit.shah@redhat.com, jsnow@redhat.com
Subject: Re: [Qemu-devel] [RFC 0/8] QEMUFile-way to gather VM's memory statistics
Date: Wed, 7 Oct 2015 15:19:24 +0100	[thread overview]
Message-ID: <20151007141923.GH2710@work-vm> (raw)
In-Reply-To: <1444198846-5383-1-git-send-email-den@openvz.org>

(ccing Juan and Amit in)

* Denis V. Lunev (den@openvz.org) wrote:
> This code is not ready to be merged. It is sent in the hope that it could
> be useful and we could invent better architectural approach for the
> feature if possible.
> 
> +tch set summary:
> - we added a feature that allows to gather VM's memory usage statistics
>   with minimum interference with VM’s work (no transferring data thru
>   network, probing time ~ downtime, etc.)
> - this feature is implemented as a new capability for the migrate command.
>   Migration started with this capability turned on will only gather dirty
>   memory statistics regardless of given URI.
> 
> More details on measurement procedure:
> To gather statistics, mechanisms created for live migration and snapshots
> are used. This is the easiest approach for getting dirty bitmap of memory
> pages.

Hi Denis,
  Thank you; it's something I know we had wondered about doing, so we could
get some idea of how bad a particular application was.
  We'd also been thinking of doing it as a dummy transport.


> Main points:
> 1. A function for bitmap resetting was added. During migration the process
>    is bit-wise and so very time-consuming. What is more, it involves memory
>    pages copying to the buffer.
> 2. A new hook hook_ram_sync() for QEMUFile was added. According to the
>    previous point, we should pass the number of dirty pages before the
>    resetting. As a result of passing control using hook_ram_sync() we can
>    add a delay and let the VM to 'dirty' memory
> 3. New transport was created (QEMUFile implementation). As we want to use
>    migration_thread() function, all logic that processes and outputs the
>    gathered information should be hidden here.
> 
> Algorithm for dirty rate estimation:
> 1. Start memory logging (ram_save_setup())
> 2. The first reset of dirty bitmap, pass size of VM memory
> 3. Sleep на время равное downtime'у

 | translate > 'for a time equal to'

> 4. Synchronization of bitmap
> 5. The second reset of dirty bitmap, pass size of dirty VM memory.
> 6. Compute dirty byte rate, assuming that time between two synchronization
>    equals downtime.
> 7. Fill corresponding fields in MigrationState.
> 8. After finishing of hook_ram_sync return error code "-42"
> 9. In migration_thread() error code "-42" is interpreted as successful
>    completion and MigrationStatus is changed

Yeh I'm not quite sure why you don't just let it fall through the end of migration
and dump these into the normal output of info migrate in the 'completed' output.

Dave

> 
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> Signed-off-by: Igor Redko <redkoi@virtuozzo.com>
> Reviewed-by: Anna Melekhova <annam@virtuozzo.com>
> 
> Igor Redko (7):
>   qemu-file: new hook in qemu-file
>   migration: add new capability test-only
>   migration: add function for reseting migration bitmap
>   migration: add draft of new transport
>   migration: implementation of hook_ram_sync
>   migration: new migration test mode
>   migration: add output of gathered statistics
> 
>  include/migration/migration.h |  5 +++
>  include/migration/qemu-file.h |  1 +
>  migration/Makefile.objs       |  2 +-
>  migration/migration.c         | 53 +++++++++++++++++++++--
>  migration/qemu-file.c         | 12 ++++++
>  migration/ram.c               | 30 ++++++++++++-
>  migration/test.c              | 99 +++++++++++++++++++++++++++++++++++++++++++
>  qapi-schema.json              |  9 +++-
>  qmp-commands.hx               |  1 +
>  9 files changed, 204 insertions(+), 8 deletions(-)
>  create mode 100644 migration/test.c
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  parent reply	other threads:[~2015-10-07 14:19 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-06 18:46 [Qemu-devel] Debugging Migration John Snow
2015-10-06 19:00 ` Dr. David Alan Gilbert
2015-10-06 22:40 ` Denis V. Lunev
2015-10-06 23:02   ` John Snow
2015-10-07  6:20     ` [Qemu-devel] [RFC 0/8] QEMUFile-way to gather VM's memory statistics Denis V. Lunev
2015-10-07  6:20       ` [Qemu-devel] [PATCH 1/8] migration: fix expected_downtime Denis V. Lunev
2015-10-07  6:20       ` [Qemu-devel] [PATCH 2/8] qemu-file: new hook in qemu-file Denis V. Lunev
2015-10-07  6:20       ` [Qemu-devel] [PATCH 3/8] migration: add new capability test-only Denis V. Lunev
2015-10-07 15:05         ` Eric Blake
2015-10-08 14:54           ` Denis V. Lunev
2015-10-09 15:19             ` Dr. David Alan Gilbert
2015-10-07  6:20       ` [Qemu-devel] [PATCH 4/8] migration: add function for reseting migration bitmap Denis V. Lunev
2015-10-07  6:20       ` [Qemu-devel] [PATCH 5/8] migration: add draft of new transport Denis V. Lunev
2015-10-07  6:20       ` [Qemu-devel] [PATCH 6/8] migration: implementation of hook_ram_sync Denis V. Lunev
2015-10-07  9:44         ` Paolo Bonzini
2015-10-08 16:51           ` Denis V. Lunev
2015-10-07  9:44         ` Paolo Bonzini
2015-10-08 16:39           ` Denis V. Lunev
2015-10-07 14:03         ` Dr. David Alan Gilbert
2015-10-07  6:20       ` [Qemu-devel] [PATCH 7/8] migration: new migration test mode Denis V. Lunev
2015-10-07 13:56         ` Dr. David Alan Gilbert
2015-10-07 15:08           ` Eric Blake
2015-10-08 17:01             ` Denis V. Lunev
2015-10-08 17:05               ` Dr. David Alan Gilbert
2015-10-08 17:05           ` Denis V. Lunev
2015-10-08 18:57             ` Dr. David Alan Gilbert
2015-10-07  6:20       ` [Qemu-devel] [PATCH 8/8] migration: add output of gathered statistics Denis V. Lunev
2015-10-07 14:19       ` Dr. David Alan Gilbert [this message]
2015-10-07  6:38     ` [Qemu-devel] Debugging Migration Denis V. Lunev

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=20151007141923.GH2710@work-vm \
    --to=dgilbert@redhat.com \
    --cc=amit.shah@redhat.com \
    --cc=annam@virtuozzo.com \
    --cc=den@openvz.org \
    --cc=jsnow@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=redkoi@virtuozzo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).