I'll be able to commit the swapcache write clustering code later today. This code collects 4K pages into larger 64K clusters and also tends to assign linear swap space when multiple clusters are being pushed, as well as roughly match a multiple of the buffer cache blocksize. This gives the SSD the ability to optimally write-combine and optimally handle erasures and reduces occurrences of fragmented reads.
So far preliminary tests show a fairly serious improvement in SSD performance. With this Intel 40G SSD I am getting 180-200 MB/sec readbacks. foreach i ( dfly-gui-2.1.1_REL.iso msdos_usbkey.img test ) dd if=$i of=/dev/null bs=32k end 1270548480 bytes transferred in 6.737439 secs (188580334 bytes/sec) 2008023040 bytes transferred in 10.722041 secs (187279923 bytes/sec) 3302752256 bytes transferred in 14.657742 secs (225324764 bytes/sec) -- I ran leaf.dragonflybsd.org with swapcache meta-data caching enabled overnight. Operational characteristics were very good. It bursted most of the meta-data in the first few hours and the write rate then went to almost zero after that. I have just now turned on data caching on leaf too, so both meta-data and data will now be swap-cached so see how that works out. I have reduced the accrate to 100K/s to see how it effects the bursting over the day. Ultimately we want the swapcache to be effective with a long-term average write rate in the 100K/s range for MLC drives. 100K/sec = 8G/day = 5-10 year life span for a $100 SSD which massively improves storage performance. Win. (Leaf is not running the write clustering code yet however). -Matt