Interesting on the corking stuff. I looked at this a long time ago (http://baus.net/on-tcp_cork/) and found it could make a significant difference for event driven applications.
BTW, from my link: "If you need to write multiple buffers that are currently in memory you should prefer the gather function writev() before considering TCP_CORK with multiple calls to write()."