I am sponsoring the following case on behalf of Neil Perrin. Requested binding is Micro/Patch. The case is a straight-forward addition of a new property on zfs datasets for tuning separate intent log usage. I believe the case qualifies for self review and have filed it as closed approved automatic. If folks disagree, let me know and I'll convert it to a fast-track.
Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: ZFS logbias property 1.2. Name of Document Author/Supplier: Author: Neil Perrin 1.3 Date of This Document: 07 August, 2009 4. Technical Description Summary Provide zfs with the ability to control the use of resources used for synchronous (eg fsync, O_DSYNC) requests. In particular it enables substantially better performance for Oracle and potentially other applications. Background Oracle manages two major types of files, the Data Files and the Redo Log files. Writes to Redo Log files are in the path of all transactions and low latency is a requirement. It is critical for good performance to give high priority to these write requests. Data Files are also the subject of writes from DB writers as a form of scrubbing dirty blocks to insure DB buffer availability. Write latency is much less an issue. Of more more importance is achieving an acceptable level of throughput. These writes are less critical to delivered performance. Both types of writes are synchronous (using O_DSYNC), and thus treated equally. They compete for the same resources: separate intent log, memory, and normal pool IO. The Data File writes impede the potential performance of the critical Redo Log writers. Proposal Create a new "logbias" property for zfs datasets. If logbias is set to 'latency' (the default) then there is no change from the current implementation. If the logbias property is set to 'throughput' then intent log blocks will be allocated from the main pool instead of any separate intent log devices (if present). Also data will be written immediately to spread the write load thus making for quicker subsequent transaction group commits to the pool. To change the property, an admin will use the standard zfs set command: # zfs set logbias=latency {dataset} # zfs set logbias=throughput {dataset} The current value of logbias can be retrieved in the normal manner with 'zfs get logbias' or 'zfs list -o logbias'. Manpage diffs --- old=09Thu May 7 15:41:08 2009 +++ new=09Thu May 7 15:44:30 2009 @@ -1038,7 +1038,15 @@ perty was changed. If the new property is "off", the file systems are unshared. + logbias = latency | throughput + + Provide a hint to ZFS about handling of synchronous + requests in this dataset. If logging is set to "latency" (the + default) ZFS will use pool log devices (if configured) to handle the + requests at low latency. If logging is set to "throughput" then ZFS + will not use configured pool log devices. ZFS will + instead optimize synchronous operations for global + pool throughput and efficient use of resources. 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: Automatic 6.6. ARC Exposure: open