[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/6] python script for extracting bitmap from a bina
From: |
Sanidhya Kashyap |
Subject: |
[Qemu-devel] [PATCH 6/6] python script for extracting bitmap from a binary file |
Date: |
Tue, 20 May 2014 23:17:55 +0530 |
This script extracts the bitmap only from a binary file. It takes only
a single input as file. This will be useful to users for exploring the
writable working set for the VM.
Signed-off-by: Sanidhya Kashyap <address@hidden>
---
scripts/extract-bitmap.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 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..64ce136
--- /dev/null
+++ b/scripts/extract-bitmap.py
@@ -0,0 +1,68 @@
+#!/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) Sanidhya Kashyap <address@hidden>
+#
+# Authors:
+# Sanidhya Kashyap
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+
+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 = get_long_integer(infile.read(long_bytes))
+ print bitmap_length
+
+ dump_bitmap(infile, bitmap_length);
+
+ infile.close()
+
+if __name__ == '__main__':
+ main()
--
1.8.3.1
- [Qemu-devel] [PATCH 0/6] Obtain dirty bitmap via VM logging, Sanidhya Kashyap, 2014/05/20
- [Qemu-devel] [PATCH 3/6] hmp interface for dirty bitmap dump, Sanidhya Kashyap, 2014/05/20
- [Qemu-devel] [PATCH 4/6] cancel mechanism for an already running dump bitmap process, Sanidhya Kashyap, 2014/05/20
- [Qemu-devel] [PATCH 5/6] set the frequency of the dump bitmap process, Sanidhya Kashyap, 2014/05/20
- Re: [Qemu-devel] [PATCH 0/6] Obtain dirty bitmap via VM logging, ChenLiang, 2014/05/21