As the question suggests, does anybody have any tips in increasing disk performance in OS X Leopard?
Defraging (you'll need a third party app such as iDefrag) may make a difference in specific instances (specifically if you're running at more than 90% capacity or use particularly big files):
Some apps (such as iDefrag) also offer disk optimisation and this MacFix article suggests that they may be right getting some performance improvements on a machine that didn't meet the apple criteria:
I can't personally vouch for it but I am interested and may look at buying it when I've got some spare cash knocking around.
iDefrag is very good and respects the 'Hot Zone' for the Mac OS, check the existing directory structure first using Disk Utility, repair it if it's showing any problems - use DiskWarrior if DU fails. You can also check out Tech Tools Pro and Drive Genius.
A very simple solution: clone your drive using CarbonCopyCloner and then restore it - it makes files contiguous, and you get a backup in the process!!! :-)
Here is a whitepaper from the Superduper! guys (a great commercial alternative to CCC) on this type of defragmentation:
I have tried iDefrag, and it does what it says on the tin, very nice UI and the best defrag software for OS X by far (hot file aware for example which many others aren't). I've also tried Disk defrag, which is part of Speed tools, which does very basic defragging but doesn't require a roboot which is good.
I would not recommend defragging as this can actually reduce performance on OSX, especially if it will move the hot area of the drive (system files usually in the fastest area of the disk).
The journaling implementation of HFS will copy files on write, it's advised that if you have data that is less important then you should create separate non-journaled volumes and mount those individually. Temp area is a candidate for a non journaled partition.
Also if you're storing a database on your volumes then you want to turn journalling off as they usually have an BI (Before-Image) associated which is effectively a journal in itself.
I found that the command
iopending (run with root priviliges) gives an interesting overview of the average disk queue length (= pending disk IO operations).
The rule of thumb is that it should not exceed 2. If it does, the storage subsystem cannot handle the load sufficiently.