[Ocfs2-tools-devel] [PATCH] debugfs.ocfs2: Add a fragmentation score to the 'frag' command.

Joel Becker Joel.Becker at oracle.com
Thu Aug 6 18:20:23 PDT 2009


Fragmentation is often looked at to see the effect on I/O.  But a 100%
fragmented file of 1MB clusters will perform a lot better than a 10%
fragmented file of 4K clusters.

This adds a 'fragmentation score' to the 'frag' command of
debugfs.ocfs2.  The score is simply calculated as the fragmentation
percentage times the number of clusters per megabyte.  Why a megabyte?
Partly because it's our largest cluster size, but also because we know
1MB I/Os are a nice sweet spot.

This gives us an easy way to compare the I/O of files across cluster
sizes.  The higher the score, the worse the I/O.

A file with one extent has a score of 0.  Our theoretical 100%
fragmented file of 1MB clusters has a score of 100.  The 10% fragmented
file of 4K clusters has a score of 2560.  Ouch!  That 10% fragmented
file has an average extent size of 40K.

Signed-off-by: Joel Becker <joel.becker at oracle.com>
---
 debugfs.ocfs2/dump.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/debugfs.ocfs2/dump.c b/debugfs.ocfs2/dump.c
index f69f8bd..4c6891a 100644
--- a/debugfs.ocfs2/dump.c
+++ b/debugfs.ocfs2/dump.c
@@ -1016,6 +1016,8 @@ void dump_frag(FILE *out, uint64_t ino, uint32_t clusters,
 	       uint32_t extents)
 {
 	float frag_level = 0;
+	int clusters_per_mb =
+		ocfs2_clusters_in_bytes(gbls.fs, OCFS2_MAX_CLUSTERSIZE);
 
 	if (clusters > 1 && extents) {
 		float e = extents, c = clusters;
@@ -1023,5 +1025,6 @@ void dump_frag(FILE *out, uint64_t ino, uint32_t clusters,
 	}
 
 	fprintf(out, "Inode: %"PRIu64"\t%% fragmented: %.2f\tclusters:"
-		" %u\textents: %u\n", ino, frag_level, clusters, extents);
+		" %u\textents: %u\tscore: %.0f\n", ino,
+		frag_level, clusters, extents, frag_level * clusters_per_mb);
 }
-- 
1.6.3.3

-- 

"If you are ever in doubt as to whether or not to kiss a pretty girl, 
 give her the benefit of the doubt"
                                        -Thomas Carlyle

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127



More information about the Ocfs2-tools-devel mailing list