summaryrefslogtreecommitdiffstats
path: root/sys/conf
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2016-04-14 21:47:58 +0000
committerimp <imp@FreeBSD.org>2016-04-14 21:47:58 +0000
commit91b03b024c254d4a91a4ab05ed9ad1c086328a1f (patch)
tree4ee2db04e3dd53c8d999ef61db02b0c1f842db8f /sys/conf
parent3b29c6c182f3cfb472b388ab3131c2353e4674bc (diff)
downloadFreeBSD-src-91b03b024c254d4a91a4ab05ed9ad1c086328a1f.zip
FreeBSD-src-91b03b024c254d4a91a4ab05ed9ad1c086328a1f.tar.gz
New CAM I/O scheduler for FreeBSD. The default I/O scheduler is the same
as before. The common scheduling bits have moved from inline code in each of the CAM periph drivers into a library that implements the default scheduling. In addition, a number of rate-limiting and I/O preference options can be enabled by adding CAM_IOSCHED_NETFLIX to your config file. A number of extra stats are also maintained. CAM_IOSCHED_NETFLIX isn't on by default because it uses a separate BIO_READ and BIO_WRITE queue, so doesn't honor BIO_ORDERED between these two types of operations. We already didn't honor it for BIO_DELETE, and we don't depend on BIO_ORDERED between reads and writes anywhere in the system (it is currently used with BIO_FLUSH in ZFS to make sure some writes are complete before others start and as a poor-man's soft dependency in one place in UFS where we won't be issuing READs until after the operation completes). However, out of an abundance of caution, it isn't enabled by default. Plus, this also brings in NCQ TRIM support for those SSDs that support it. A black list is also provided for known rogues that use NCQ trim as an excuse to corrupt the drive. It was difficult to separate out into a separate commit. This code has run in production at Netflix for over a year now. Sponsored by: Netflix, Inc Differential Revision: https://reviews.freebsd.org/D4609
Diffstat (limited to 'sys/conf')
-rw-r--r--sys/conf/files1
-rw-r--r--sys/conf/options1
2 files changed, 2 insertions, 0 deletions
diff --git a/sys/conf/files b/sys/conf/files
index 46e9768..8831f5c 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -68,6 +68,7 @@ usbdevs_data.h optional usb \
clean "usbdevs_data.h"
cam/cam.c optional scbus
cam/cam_compat.c optional scbus
+cam/cam_iosched.c optional scbus
cam/cam_periph.c optional scbus
cam/cam_queue.c optional scbus
cam/cam_sim.c optional scbus
diff --git a/sys/conf/options b/sys/conf/options
index 2283705..11e778f 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -329,6 +329,7 @@ CAM_DEBUG_TARGET opt_cam.h
CAM_DEBUG_LUN opt_cam.h
CAM_DEBUG_FLAGS opt_cam.h
CAM_BOOT_DELAY opt_cam.h
+CAM_NETFLIX_IOSCHED opt_cam.h
SCSI_DELAY opt_scsi.h
SCSI_NO_SENSE_STRINGS opt_scsi.h
SCSI_NO_OP_STRINGS opt_scsi.h
OpenPOWER on IntegriCloud