[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