Tony Nguyen 8d04284281 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
2019-08-28 14:56:54 -07:00
..
2019-08-16 09:08:21 -06:00
2019-07-26 10:54:14 -07:00
2019-07-26 10:54:14 -07:00
2019-06-19 09:48:12 -07:00
2019-06-19 09:48:12 -07:00
2019-06-19 14:54:02 -07:00
2019-06-19 09:48:12 -07:00
2019-05-07 15:18:44 -07:00
2019-06-19 09:48:12 -07:00
2019-06-19 09:48:12 -07:00
2019-06-19 09:48:12 -07:00
2019-07-25 11:57:58 -07:00
2019-06-19 09:48:12 -07:00
2018-05-29 16:00:33 -07:00
2019-07-26 10:54:14 -07:00
2018-05-29 16:00:33 -07:00
2019-07-26 10:54:14 -07:00
2018-05-29 16:00:33 -07:00
2019-05-02 16:46:04 -07:00
2019-07-16 10:11:49 -07:00
2019-08-16 09:08:21 -06:00
2019-06-19 09:48:12 -07:00
2018-03-15 10:53:58 -07:00
2018-05-29 16:00:33 -07:00
2019-07-26 10:54:14 -07:00
2019-08-16 09:08:21 -06:00
2019-08-16 09:08:21 -06:00
2019-07-16 10:11:49 -07:00
2019-07-16 10:11:49 -07:00
2018-05-29 16:00:33 -07:00
2019-06-20 18:29:02 -07:00
2019-07-16 10:11:49 -07:00
2019-08-16 09:08:21 -06:00
2019-06-20 18:29:02 -07:00
2019-06-20 18:29:02 -07:00
2019-06-20 18:29:02 -07:00
2019-07-16 10:11:49 -07:00
2019-06-20 18:29:02 -07:00
2019-08-16 09:08:21 -06:00
2019-08-16 09:08:21 -06:00
2019-06-12 13:13:09 -07:00
2019-07-16 14:14:12 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-05-29 16:00:33 -07:00
2018-02-13 14:54:54 -08:00
2019-08-27 09:55:51 -07:00
2019-08-27 09:55:51 -07:00
2019-03-15 14:14:31 -07:00
2018-02-09 10:08:05 -08:00
2018-05-29 16:00:33 -07:00
2019-07-26 10:54:14 -07:00