Not sure how gfs2 deals with client caching, but in other scenarios it's probably easier to just throw a lot of ram in the system and let the filesystem cache do its job. You still have to deal with applications that need to fsync(), though.
Our nodes all have 12 gigs of ddr3 ram, that should be plenty. The node where the application I'm dealing with is has about half used.