DragonFly commits List (threaded) for 2008-06
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
cvs commit: src/sys/vfs/hammer hammer.h hammer_btree.c hammer_btree.h hammer_cursor.c hammer_flusher.c hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_recover.c hammer_subs.c hammer_vfsops.c hammer_vnops.c
dillon 2008/06/10 15:30:22 PDT
DragonFly src repository
Modified files:
sys/vfs/hammer hammer.h hammer_btree.c hammer_btree.h
hammer_cursor.c hammer_flusher.c
hammer_inode.c hammer_io.c
hammer_object.c hammer_ondisk.c
hammer_recover.c hammer_subs.c
hammer_vfsops.c hammer_vnops.c
Log:
HAMMER 53H/Many: Performance tuning, bug fixes
* CHANGE THE ON-MEDIA B-TREE STRUCTURE. The number of elements per node has
been increased from 16 to 64. The intent is to reduce the number of seeks
required in a heavy random-access loading situation.
* Add a shortcut to the B-Tree node scanning code (requires more testing).
Instead of scanning linearly we do a power-of-2 narrowing search.
* Only do clustered reads for DATA types. Do not cluster meta-data (aka
B-Tree) I/O. Note that the inode data structure is considered to be
a DATA type. Reduce the cluster read side from 256K to 64K to avoid
blowing out the buffer cache.
* Augment hammer locks so one can discern between a normal lock blockage
and one that is recovering from a deadlock.
* Change the slave work threads for the flusher to pull their work off a
single queue. This fixes an issue where one slave work thread would
sometimes get a disproportionate percentage of the work and the
master thread then had to wait for it to finish while the other work
threads were twiddling their thumbs.
* Adjust the wait reclaims code to solve a long standing performance issue.
The flusher could get so far behind that the system's buffer cache buffers
would no longer have any locality of reference to what was being flushed,
causing a massive drop in performance.
* Do not queue a dirty inode to the flusher unconditionally in the strategy
write code. Only do it if system resources appear to be stressed.
The inode will get flushed when the filesystem syncs.
* Code cleanup.
* Fix a bug reported by Antonio Huete Jimenez related to 0-length writes
not working properly.
Revision Changes Path
1.80 +30 -17 src/sys/vfs/hammer/hammer.h
1.51 +53 -4 src/sys/vfs/hammer/hammer_btree.c
1.17 +8 -3 src/sys/vfs/hammer/hammer_btree.h
1.27 +2 -2 src/sys/vfs/hammer/hammer_cursor.c
1.24 +49 -35 src/sys/vfs/hammer/hammer_flusher.c
1.70 +43 -86 src/sys/vfs/hammer/hammer_inode.c
1.38 +48 -15 src/sys/vfs/hammer/hammer_io.c
1.65 +2 -2 src/sys/vfs/hammer/hammer_object.c
1.53 +1 -1 src/sys/vfs/hammer/hammer_ondisk.c
1.23 +17 -1 src/sys/vfs/hammer/hammer_recover.c
1.24 +2 -2 src/sys/vfs/hammer/hammer_subs.c
1.44 +10 -2 src/sys/vfs/hammer/hammer_vfsops.c
1.65 +23 -12 src/sys/vfs/hammer/hammer_vnops.c
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.79&r2=1.80&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.50&r2=1.51&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.h.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.c.diff?r1=1.26&r2=1.27&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_flusher.c.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.69&r2=1.70&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.64&r2=1.65&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.52&r2=1.53&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_recover.c.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_subs.c.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.43&r2=1.44&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.64&r2=1.65&f=u
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]