diff options
author | Theodore Ts'o <tytso@mit.edu> | 2009-01-03 20:27:38 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2009-01-03 20:27:38 -0500 |
commit | 30773840c19cea60dcef39545960d541b1ac1cf8 (patch) | |
tree | f220a2dce451a40dc7264e8fd70c77c5a3908873 /Documentation | |
parent | d7cfa4684d82f58e5d7cb73b8a3c88c169937f25 (diff) |
ext4: add fsync batch tuning knobs
Add new mount options, min_batch_time and max_batch_time, which
controls how long the jbd2 layer should wait for additional filesystem
operations to get batched with a synchronous write transaction.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/filesystems/ext4.txt | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index f75ab101c00a..e3fcbea3ec8c 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -283,6 +283,35 @@ delalloc (*) Deferring block allocation until write-out time. | |||
283 | nodelalloc Disable delayed allocation. Blocks are allocation | 283 | nodelalloc Disable delayed allocation. Blocks are allocation |
284 | when data is copied from user to page cache. | 284 | when data is copied from user to page cache. |
285 | 285 | ||
286 | max_batch_time=usec Maximum amount of time ext4 should wait for | ||
287 | additional filesystem operations to be batch | ||
288 | together with a synchronous write operation. | ||
289 | Since a synchronous write operation is going to | ||
290 | force a commit and then a wait for the I/O | ||
291 | complete, it doesn't cost much, and can be a | ||
292 | huge throughput win, we wait for a small amount | ||
293 | of time to see if any other transactions can | ||
294 | piggyback on the synchronous write. The | ||
295 | algorithm used is designed to automatically tune | ||
296 | for the speed of the disk, by measuring the | ||
297 | amount of time (on average) that it takes to | ||
298 | finish committing a transaction. Call this time | ||
299 | the "commit time". If the time that the | ||
300 | transactoin has been running is less than the | ||
301 | commit time, ext4 will try sleeping for the | ||
302 | commit time to see if other operations will join | ||
303 | the transaction. The commit time is capped by | ||
304 | the max_batch_time, which defaults to 15000us | ||
305 | (15ms). This optimization can be turned off | ||
306 | entirely by setting max_batch_time to 0. | ||
307 | |||
308 | min_batch_time=usec This parameter sets the commit time (as | ||
309 | described above) to be at least min_batch_time. | ||
310 | It defaults to zero microseconds. Increasing | ||
311 | this parameter may improve the throughput of | ||
312 | multi-threaded, synchronous workloads on very | ||
313 | fast disks, at the cost of increasing latency. | ||
314 | |||
286 | Data Mode | 315 | Data Mode |
287 | ========= | 316 | ========= |
288 | There are 3 different data modes: | 317 | There are 3 different data modes: |