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_cursor.c hammer_flusher.c hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_vfsops.c hammer_vnops.c
dillon 2008/06/12 17:25:33 PDT
DragonFly src repository
Modified files:
sys/vfs/hammer hammer.h hammer_btree.c hammer_cursor.c
hammer_flusher.c hammer_inode.c
hammer_io.c hammer_object.c
hammer_ondisk.c hammer_vfsops.c
hammer_vnops.c
Log:
HAMMER 54D/Many: Performance tuning.
* Remove major barriers to write performance and fix hicups revealed by
blogbench.
Change the HAMMER reclaim-delay algorithm to operate like a FIFO instead
of as a free-for-all. The idea of introducing a dynamic delay helped some,
but the addition of the wakeup FIFO allows burst completions by the flusher
to immediately wakeup processes that were waiting for the reclaim count to
drain. The result is far, far smoother operation.
* Remove a major blocking conflict between the buffer cache daemon and
HAMMER. The buffer cache was getting stuck on trying to overwrite dirty
records that had already been queued to the flusher. The flusher might
not act on the record(s) for a long period of time, causing the buffer
cache daemon to stall.
Fix the problem by properly using the HAMMER_RECF_INTERLOCK_BE flag,
which stays on only for a very short period of time, instead of testing
the record's flush state (record->flush_state), which can stay in
the HAMMER_FST_FLUSH state for a very long time.
* The parent B-Tree node does not need to be locked when inserting
into the child.
* Use the new B_AGE semantics to keep meta-data intact longer. This results
in another big improvement in random read and write performance.
Revision Changes Path
1.83 +14 -8 src/sys/vfs/hammer/hammer.h
1.52 +24 -3 src/sys/vfs/hammer/hammer_btree.c
1.29 +13 -2 src/sys/vfs/hammer/hammer_cursor.c
1.26 +7 -0 src/sys/vfs/hammer/hammer_flusher.c
1.74 +100 -76 src/sys/vfs/hammer/hammer_inode.c
1.40 +6 -5 src/sys/vfs/hammer/hammer_io.c
1.67 +13 -20 src/sys/vfs/hammer/hammer_object.c
1.56 +7 -1 src/sys/vfs/hammer/hammer_ondisk.c
1.47 +1 -3 src/sys/vfs/hammer/hammer_vfsops.c
1.69 +4 -5 src/sys/vfs/hammer/hammer_vnops.c
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.82&r2=1.83&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.51&r2=1.52&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.c.diff?r1=1.28&r2=1.29&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_flusher.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.73&r2=1.74&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.39&r2=1.40&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.66&r2=1.67&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.55&r2=1.56&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.46&r2=1.47&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.68&r2=1.69&f=u
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]