mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-23 10:54:35 +03:00
Use smaller default slack/delta value for schedule_hrtimeout_range()
For interrupt coalescing, cv_timedwait_hires() uses a 100us slack/delta for calls to schedule_hrtimeout_range(). This 100us slack can be costly for small writes. This change improves small write performance by passing resolution `res` parameter to schedule_hrtimeout_range() to be used as delta/slack. A new tunable `spl_schedule_hrtimeout_slack_us` is added to preserve old behavior when desired. Performance observations on 8K recordsize filesystem: - 8K random writes at 1-64 threads, up to 60% improvement for one thread and smaller gains as thread count increases. At >64 threads, 2-5% decrease in performance was observed. - 8K sequential writes, similar 60% improvement for one thread and leveling out around 64 threads. At >64 threads, 5-10% decrease in performance was observed. - 128K sequential write sees 1-5 for the 128K. No observed regression at high thread count. Testing done on Ubuntu 18.04 with 4.15 kernel, 8vCPUs and SSD storage on VMware ESX. Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Matt Ahrens <mahrens@delphix.com> Signed-off-by: Tony Nguyen <tony.nguyen@delphix.com> Closes #9217
This commit is contained in:
committed by
Brian Behlendorf
parent
07a328dde4
commit
8d04284281
+1
-1
@@ -672,7 +672,7 @@ mmp_thread(void *arg)
|
||||
|
||||
CALLB_CPR_SAFE_BEGIN(&cpr);
|
||||
(void) cv_timedwait_sig_hires(&mmp->mmp_thread_cv,
|
||||
&mmp->mmp_thread_lock, next_time, USEC2NSEC(1),
|
||||
&mmp->mmp_thread_lock, next_time, USEC2NSEC(100),
|
||||
CALLOUT_FLAG_ABSOLUTE);
|
||||
CALLB_CPR_SAFE_END(&cpr, &mmp->mmp_thread_lock);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user