git: kernel - revamp cluster_read API and improve performance

看板DFBSD_commit作者時間15年前 (2010/08/16 08:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 364c022c7c967c27285b70d069fc14df03ffe267 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Sun Aug 15 17:20:48 2010 -0700 kernel - revamp cluster_read API and improve performance * Revamp the API to be much less confusing. Pass a minimum read ahead based on the higher level uio length, and a maximum read ahead based on the sequential heuristic. These combine together to determine how much read-ahead to do. For example if a program is doing random-reads with 1MB read() requests the minreq will take precedence, whereas if the program is doing sequential-reads of 8K the maxreq will take precedence. The sequential heuristic currently maxes out at 128 * 16384 = 2MB. * Introduce sysctl vfs.max_readahead instead of hardwiring the maximum read-ahead. This defaults to 2MB which is big enough for just about anything. Generally speaking this value should be larger than your stripe width. Note that currently the sequential heuristic also maxes out at 2MB so you cannot go larger than 2MB. * Also correct bugs that existed in the old cluster_read(), dramatically improving performance on striped volumes with large chunk sizes (128K+) and a large number of drives (3+). * No change here but note that HAMMER will currently issue a minimum of 64K worth of read-ahead when accessing meta-data. Summary of changes: sys/kern/vfs_cluster.c | 157 +++++++++++++++++++++-------------- sys/sys/buf.h | 2 +- sys/vfs/gnu/ext2fs/ext2_readwrite.c | 3 +- sys/vfs/hammer/hammer_io.c | 9 +- sys/vfs/hammer/hammer_vnops.c | 4 +- sys/vfs/isofs/cd9660/cd9660_vnops.c | 3 +- sys/vfs/ufs/ffs_balloc.c | 7 +- sys/vfs/ufs/ffs_subr.c | 2 +- 8 files changed, 113 insertions(+), 74 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/364c022c7c967c27285b70d069fc14df03ffe267 -- DragonFly BSD source repository
文章代碼(AID): #1CQ8S8om (DFBSD_commit)