[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 8/8] python script for extracting bitmap from a bina
From: |
Sanidhya Kashyap |
Subject: |
[Qemu-devel] [PATCH 8/8] python script for extracting bitmap from a binary file |
Date: |
Mon, 26 May 2014 12:03:25 +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
- [Qemu-devel] [PATCH 0/8] Obtain dirty bitmap via VM logging, Sanidhya Kashyap, 2014/05/26
- [Qemu-devel] [PATCH 1/8] enable sharing of the function between migration and bitmap dump, Sanidhya Kashyap, 2014/05/26
- [Qemu-devel] [PATCH 2/8] bitmap dump code via QAPI framework, Sanidhya Kashyap, 2014/05/26
- [Qemu-devel] [PATCH 3/8] RunState: added two new flags for bitmap dump and migration process, Sanidhya Kashyap, 2014/05/26
- [Qemu-devel] [PATCH 4/8] bitmap dump process with runstates, Sanidhya Kashyap, 2014/05/26
- [Qemu-devel] [PATCH 5/8] hmp interface for dirty bitmap dump, Sanidhya Kashyap, 2014/05/26
- [Qemu-devel] [PATCH 6/8] cancel mechanism for an already running dump bitmap process, Sanidhya Kashyap, 2014/05/26
- [Qemu-devel] [PATCH 8/8] python script for extracting bitmap from a binary file,
Sanidhya Kashyap <=
- [Qemu-devel] [PATCH 7/8] set the frequency of the dump bitmap process, Sanidhya Kashyap, 2014/05/26