From: Tom Caputi Date: Tue, 6 Feb 2018 00:57:53 +0000 (-0500) Subject: Adjust ARC prefetch tunables to match docs X-Git-Tag: zfs-0.8.0-rc1~368 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2b84817f66468da11d5c4373602a0044af46b572;p=zfs Adjust ARC prefetch tunables to match docs Currently, the ARC exposes 2 tunables (zfs_arc_min_prefetch_ms and zfs_arc_min_prescient_prefetch_ms) which are documented to be specified in milliseconds. However, the code actually uses the values as though they were in seconds. This patch adjusts the code to match the names and documentation of the tunables. Reviewed-by: Brian Behlendorf Reviewed-by: Giuseppe Di Natale Reviewed by: George Melikov Signed-off-by: Tom Caputi Closes #7126 --- diff --git a/man/man5/zfs-module-parameters.5 b/man/man5/zfs-module-parameters.5 index a5c83b422..77b162a2a 100644 --- a/man/man5/zfs-module-parameters.5 +++ b/man/man5/zfs-module-parameters.5 @@ -620,7 +620,7 @@ Default value: \fB0\fR. .ad .RS 12n Minimum time prefetched blocks are locked in the ARC, specified in ms. -A value of \fB0\fR will default to 1 second. +A value of \fB0\fR will default to 1000 ms. .sp Default value: \fB0\fR. .RE @@ -633,7 +633,7 @@ Default value: \fB0\fR. .RS 12n Minimum time "prescient prefetched" blocks are locked in the ARC, specified in ms. These blocks are meant to be prefetched fairly aggresively ahead of -the code that may use them. A value of \fB0\fR will default to 6 seconds. +the code that may use them. A value of \fB0\fR will default to 6000 ms. .sp Default value: \fB0\fR. .RE diff --git a/module/zfs/arc.c b/module/zfs/arc.c index 2f3fe9771..4fffc2380 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -3845,7 +3845,8 @@ arc_evict_hdr(arc_buf_hdr_t *hdr, kmutex_t *hash_lock) /* prefetch buffers have a minimum lifespan */ if (HDR_IO_IN_PROGRESS(hdr) || ((hdr->b_flags & (ARC_FLAG_PREFETCH | ARC_FLAG_INDIRECT)) && - ddi_get_lbolt() - hdr->b_l1hdr.b_arc_access < min_lifetime * hz)) { + ddi_get_lbolt() - hdr->b_l1hdr.b_arc_access < + MSEC_TO_TICK(min_lifetime))) { ARCSTAT_BUMP(arcstat_evict_skip); return (bytes_evicted); } @@ -7470,9 +7471,8 @@ arc_init(void) cv_init(&arc_reclaim_thread_cv, NULL, CV_DEFAULT, NULL); cv_init(&arc_reclaim_waiters_cv, NULL, CV_DEFAULT, NULL); - /* Convert seconds to clock ticks */ - arc_min_prefetch_ms = 1; - arc_min_prescient_prefetch_ms = 6; + arc_min_prefetch_ms = 1000; + arc_min_prescient_prefetch_ms = 6000; #ifdef _KERNEL /*