diff options
author | Richard Yao <[email protected]> | 2013-08-18 10:51:06 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2013-10-09 13:28:30 -0700 |
commit | df2c0f18498d1c98e4f211fdb623376b18f18134 (patch) | |
tree | 88f17c07a1d4ab905d7b53dbf3e7e5422570be2a | |
parent | e90856f1d2ac1c5135802b802a66e60439b2ac1a (diff) |
Replace current_kernel_time() with getnstimeofday()
current_kernel_time() is used by the SPLAT, but it is not meant for
performance measurement. We modify the SPLAT to use getnstimeofday(),
which is equivalent to the gethrestime() function on Solaris.
Additionally, we update gethrestime() to invoke getnstimeofday().
Signed-off-by: Richard Yao <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #279
-rw-r--r-- | module/spl/spl-time.c | 4 | ||||
-rw-r--r-- | module/splat/splat-kmem.c | 11 |
2 files changed, 9 insertions, 6 deletions
diff --git a/module/spl/spl-time.c b/module/spl/spl-time.c index 20fd0e3e7..0ed49cc26 100644 --- a/module/spl/spl-time.c +++ b/module/spl/spl-time.c @@ -40,7 +40,9 @@ extern unsigned long long monotonic_clock(void); void __gethrestime(timestruc_t *ts) { - struct timespec tspec = current_kernel_time(); + struct timespec tspec; + + getnstimeofday(&tspec); ts->tv_sec = tspec.tv_sec; ts->tv_nsec = tspec.tv_nsec; diff --git a/module/splat/splat-kmem.c b/module/splat/splat-kmem.c index c7f36caac..28ff83721 100644 --- a/module/splat/splat-kmem.c +++ b/module/splat/splat-kmem.c @@ -682,7 +682,7 @@ splat_kmem_cache_thread_test(struct file *file, void *arg, char *name, goto out_kcp; } - start = current_kernel_time(); + getnstimeofday(&start); for (i = 0; i < SPLAT_KMEM_THREADS; i++) { thr = thread_create(NULL, 0, @@ -707,7 +707,7 @@ splat_kmem_cache_thread_test(struct file *file, void *arg, char *name, /* Sleep until all thread have finished */ wait_event(kcp->kcp_ctl_waitq, splat_kmem_cache_test_threads(kcp, 0)); - stop = current_kernel_time(); + getnstimeofday(&stop); delta = timespec_sub(stop, start); splat_vprint(file, name, @@ -1203,7 +1203,7 @@ splat_kmem_test13(struct file *file, void *arg) kmem_cache_thread_t *kct; dummy_page_t *dp; struct list_head list; - struct timespec start, delta = { 0, 0 }; + struct timespec start, stop, delta = { 0, 0 }; int size, count, slabs, fails = 0; int i, rc = 0, max_time = 10; @@ -1250,7 +1250,7 @@ splat_kmem_test13(struct file *file, void *arg) i = 0; slabs = kcp->kcp_cache->skc_slab_total; INIT_LIST_HEAD(&list); - start = current_kernel_time(); + getnstimeofday(&start); /* Apply memory pressure */ while (kcp->kcp_cache->skc_slab_total > (slabs >> 2)) { @@ -1259,7 +1259,8 @@ splat_kmem_test13(struct file *file, void *arg) splat_kmem_cache_test_debug( file, SPLAT_KMEM_TEST13_NAME, kcp); - delta = timespec_sub(current_kernel_time(), start); + getnstimeofday(&stop); + delta = timespec_sub(stop, start); if (delta.tv_sec >= max_time) { splat_vprint(file, SPLAT_KMEM_TEST13_NAME, "Failed to reclaim 3/4 of cache in %ds, " |