This is a stupid simple diff to see just how much time you spend waiting for your disk. If you're into measuring that kind of thing.
Index: vfs_bio.c =================================================================== RCS file: /cvs/src/sys/kern/vfs_bio.c,v retrieving revision 1.146 diff -u -p -r1.146 vfs_bio.c --- vfs_bio.c 17 Feb 2013 17:39:29 -0000 1.146 +++ vfs_bio.c 5 Apr 2013 01:34:03 -0000 @@ -1153,6 +1153,8 @@ buf_daemon(struct proc *p) } } +uint64_t biowaittime; + /* * Wait for operations on the buffer to complete. * When they do, extract and return the I/O's error value. @@ -1161,12 +1163,18 @@ int biowait(struct buf *bp) { int s; + struct timespec before, after, diff; KASSERT(!(bp->b_flags & B_ASYNC)); s = splbio(); + nanotime(&before); while (!ISSET(bp->b_flags, B_DONE)) tsleep(bp, PRIBIO + 1, "biowait", 0); + nanotime(&after); + timespecsub(&after, &before, &diff); + biowaittime += diff.tv_nsec; + biowaittime += diff.tv_sec * 1000000000L; splx(s); /* check for interruption of I/O (e.g. via NFS), then errors. */