[Ocfs2-tools-devel] [PATCH 5/5] fsck.ocfs2: Read wall clock before and after reading resource usage

Sunil Mushran sunil.mushran at oracle.com
Thu Feb 9 16:54:27 PST 2012


During computing resource usage, fsck's reading of the wall clock should
encompass its reading of the resource usage. This will ensure the wall time
is not > user time.

While this fix is good, I am still seeing wall time < user time. It is not
a pressing bug as it only shows up when that values are close to zero.

Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
---
 fsck.ocfs2/util.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/fsck.ocfs2/util.c b/fsck.ocfs2/util.c
index 6cb2492..cf5281b 100644
--- a/fsck.ocfs2/util.c
+++ b/fsck.ocfs2/util.c
@@ -201,14 +201,14 @@ void o2fsck_init_resource_track(struct o2fsck_resource_track *rt,
 {
 	struct rusage r;
 
+	gettimeofday(&rt->rt_real_time, 0);
+
 	io_get_stats(channel, &rt->rt_io_stats);
 
 	memset(&r, 0, sizeof(struct rusage));
 	getrusage(RUSAGE_SELF, &r);
 	rt->rt_user_time = r.ru_utime;
 	rt->rt_sys_time = r.ru_stime;
-
-	gettimeofday(&rt->rt_real_time, 0);
 }
 
 static inline float timeval_in_secs(struct timeval *tv)
@@ -263,9 +263,9 @@ void o2fsck_compute_resource_track(struct o2fsck_resource_track *rt,
 	struct ocfs2_io_stats _ios, *ios = &_ios;
 	struct ocfs2_io_stats *rtio = &rt->rt_io_stats;
 
+	getrusage(RUSAGE_SELF, &r);
 	gettimeofday(&time_end, 0);
 
-	getrusage(RUSAGE_SELF, &r);
 	diff_timeval(&r.ru_utime, &rt->rt_user_time);
 	diff_timeval(&r.ru_stime, &rt->rt_sys_time);
 	diff_timeval(&time_end, &rt->rt_real_time);
@@ -313,6 +313,10 @@ void o2fsck_print_resource_track(char *pass, o2fsck_state *ost,
 	walltime = timeval_in_secs(&rt->rt_real_time) -
 		timeval_in_secs(&rt->rt_user_time);
 
+	/* TODO: Investigate why user time is sometimes > wall time*/
+	if (walltime < 0)
+		walltime = 0;
+
 	cache_read = (uint64_t)rtio->is_cache_hits * io_get_blksize(channel);
 	total_io = rtio->is_bytes_read + rtio->is_bytes_written;
 
-- 
1.7.7.6




More information about the Ocfs2-tools-devel mailing list