writevによるTCPパケット最適化

小さいwrite(2)を大量に呼んでいると、予想以上に細かいパケットがちまちま送信されてしまい、スループットの低下につながることがある。

writev(2)を用いることで、連続したメモリ領域にないデータを一回のシステムコールで送信することができる。この際、データが一つのパケットにまとめられやすくなる。

同様の最適化は、linux依存になるが、TCP_CORKを活用しても可能らしい。下記URL参考:

http://www.baus.net/on-tcp_cork