[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 8/8] python script for extracting bitmap from a b
From: |
Sanidhya Kashyap |
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 |
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 <address@hidden>
---
scripts/extract-bitmap.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
create mode 100755 scripts/extract-bitmap.py
diff --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 <address@hidden>
+#
+# 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
- Re: [Qemu-devel] [PATCH v2 1/8] enable sharing of the function between migration and bitmap dump, (continued)
[Qemu-devel] [PATCH v2 2/8] bitmap dump code via QAPI framework, Sanidhya Kashyap, 2014/06/04
[Qemu-devel] [PATCH v2 3/8] RunState: added two new flags for bitmap dump and migration process, Sanidhya Kashyap, 2014/06/04
[Qemu-devel] [PATCH v2 4/8] bitmap dump process with runstates, Sanidhya Kashyap, 2014/06/04
[Qemu-devel] [PATCH v2 5/8] hmp interface for dirty bitmap dump, Sanidhya Kashyap, 2014/06/04
[Qemu-devel] [PATCH v2 6/8] cancel mechanism for an already running dump bitmap process, Sanidhya Kashyap, 2014/06/04
[Qemu-devel] [PATCH v2 8/8] python script for extracting bitmap from a binary file,
Sanidhya Kashyap <=
[Qemu-devel] [PATCH v2 7/8] set the frequency of the dump bitmap process, Sanidhya Kashyap, 2014/06/04