From: Sanidhya Kashyap <sanidhya.iiith@gmail.com>
To: qemu list <qemu-devel@nongnu.org>
Cc: Sanidhya Kashyap <sanidhya.iiith@gmail.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Juan Quintela <quintela@redhat.com>
Subject: [Qemu-devel] [PATCH v2 8/8] python script for extracting bitmap from a binary file
Date: Wed, 4 Jun 2014 12:08:31 +0530 [thread overview]
Message-ID: <1401863911-5947-9-git-send-email-sanidhya.iiith@gmail.com> (raw)
In-Reply-To: <1401863911-5947-1-git-send-email-sanidhya.iiith@gmail.com>
No particular functional change. This file does not need to be included in
the Makefile as it will be only useful once the user has generated the bitmap
file via bitmap dump process.
Signed-off-by: Sanidhya Kashyap <sanidhya.iiith@gmail.com>
---
| 64 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100755 scripts/extract-bitmap.py
--git a/scripts/extract-bitmap.py b/scripts/extract-bitmap.py
new file mode 100755
index 0000000..f5ca341
--- /dev/null
+++ b/scripts/extract-bitmap.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+# This python script helps in extracting the dirty bitmap present
+# in the file after executing the log-dirty-bitmap command either
+# from the qmp or hmp interface. This file only processes binary
+# file obtained via command.
+#
+# Copyright (C) 2014 Sanidhya Kashyap <sanidhya.iiith@gmail.com>
+#
+# Authors:
+# Sanidhya Kashyap
+#
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or later.
+
+import struct
+import argparse
+from functools import partial
+
+long_bytes = 8
+complete_bitmap_list = []
+
+def get_unsigned_long_integer(value):
+ return struct.unpack('<Q', value)[0]
+
+def get_long_integer(value):
+ return struct.unpack('<q',value)[0]
+
+def dump_bitmap(infile, bitmap_length):
+ count = 1
+ bitmap_list = []
+ for value in iter(partial(infile.read, long_bytes), ''):
+ if (count % bitmap_length):
+ count += 1
+ bitmap_list.append(hex(get_unsigned_long_integer(value)))
+ else:
+ complete_bitmap_list.append(bitmap_list)
+ count = 1
+ bitmap_list = []
+ # currently, the complete list is printed. It is up to the user to decide about
+ # the usage of the bitmap as the bitmap provides the writable working set of the
+ # VM for a particular duration.
+ print complete_bitmap_list
+
+def main():
+ extracter = argparse.ArgumentParser(description='Extract dirty bitmap from binary file.')
+ extracter.add_argument('infile', help='Input file to extract the bitmap')
+ args = extracter.parse_args()
+ print 'The filename is {}'.format(args.infile)
+
+ infile = open(format(args.infile), 'rb')
+
+ ram_bitmap_pages = get_long_integer(infile.read(long_bytes))
+ print ram_bitmap_pages
+ bitmap_length = ram_bitmap_pages / long_bytes
+ if ram_bitmap_pages % long_bytes != 0:
+ bitmap_length += 1
+ print bitmap_length
+
+ dump_bitmap(infile, bitmap_length);
+
+ infile.close()
+
+if __name__ == '__main__':
+ main()
--
1.8.3.1
prev parent reply other threads:[~2014-06-04 6:39 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-04 6:38 [Qemu-devel] [PATCH v2 0/8] Obtain dirty bitmap via VM logging Sanidhya Kashyap
2014-06-04 6:38 ` [Qemu-devel] [PATCH v2 1/8] enable sharing of the function between migration and bitmap dump Sanidhya Kashyap
2014-06-04 10:07 ` Juan Quintela
2014-06-04 10:16 ` Sanidhya Kashyap
2014-06-04 11:29 ` Juan Quintela
2014-06-04 11:43 ` Sanidhya Kashyap
2014-06-04 6:38 ` [Qemu-devel] [PATCH v2 2/8] bitmap dump code via QAPI framework Sanidhya Kashyap
2014-06-04 10:12 ` Dr. David Alan Gilbert
2014-06-04 10:18 ` Juan Quintela
2014-06-04 6:38 ` [Qemu-devel] [PATCH v2 3/8] RunState: added two new flags for bitmap dump and migration process Sanidhya Kashyap
2014-06-04 10:08 ` Dr. David Alan Gilbert
2014-06-04 6:38 ` [Qemu-devel] [PATCH v2 4/8] bitmap dump process with runstates Sanidhya Kashyap
2014-06-04 6:38 ` [Qemu-devel] [PATCH v2 5/8] hmp interface for dirty bitmap dump Sanidhya Kashyap
2014-06-04 6:38 ` [Qemu-devel] [PATCH v2 6/8] cancel mechanism for an already running dump bitmap process Sanidhya Kashyap
2014-06-04 6:38 ` [Qemu-devel] [PATCH v2 7/8] set the frequency of the " Sanidhya Kashyap
2014-06-04 6:38 ` Sanidhya Kashyap [this message]
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=1401863911-5947-9-git-send-email-sanidhya.iiith@gmail.com \
--to=sanidhya.iiith@gmail.com \
--cc=dgilbert@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.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).