Project

General

Profile

Download (2.08 KB) Statistics
| Branch: | Tag: | Revision:
import os
import sys

import fiemap

def main():
if len(sys.argv) < 2:
print 'ERROR: not enough arguments provided'
return -1
base_path = sys.argv[1]
# Statistics variables
smallest_extent = 2**20
largest_extent = 0
number_extents = 0
number_chunks = 0
total_extent_size = 0
directory_count = 0
# Iterate over all of the "file" directories
directories = [d for d in os.listdir(base_path)
if os.path.isdir(os.path.join(base_path, d))]
dir_total = len(directories)
for directory in directories:
path = os.path.join(base_path, directory)
directory_count += 1
sys.stdout.write('(%d of %d) -- file: %s --- analyzing ... ' %
(directory_count, dir_total, directory))
sys.stdout.flush()
# Iterate over all of the chunk files
for file_ in os.listdir(path):
file_path = os.path.join(path, file_)
number_chunks += 1
# Open a chunk file to perform the fiemap call
with open(file_path, 'r') as fd:
map_ = fiemap.get_all_mappings(fd)
# Update statistics variables
number_extents += len(map_.extents)
for extent in map_.extents:
if extent.length < smallest_extent:
smallest_extent = extent.length
if extent.length > largest_extent:
largest_extent = extent.length
total_extent_size += extent.length
sys.stdout.write('DONE\n')
sys.stdout.flush()
# Print out final statistics
print '-' * 80
print 'Smallest extent size: %8d' % smallest_extent
print 'Largest extent size: %8d' % largest_extent
print 'Average extents per chunk: %8d' % (number_extents / number_chunks)
print 'Average extent size: %8d' % (total_extent_size / number_extents)
if __name__ == '__main__':
sys.exit(main())
(1-1/4)