FreeBSD Daily Topics

2007年5月9日 共有/排他ロックsx(9)を活用しネットワークパフォーマンス向上とマルチスレッドでのよりよい動作の実現,BitTyrant追加

この記事を読むのに必要な時間:およそ 0.5 分

src

sys/kern
sys/netinet
sys/sys
SB_WANT/SB_LOCKフラグをそれぞれのソケットバッファにおいてmutexともに活用して動作するスリープロックsblock()が実装されました。同ロック実装はソケットにおいてI/OをシリアライズしI/Oインターレスを避けるために使われます。
この実装変更は,これまでカスタムスリープロックを使って実装していた部分を,共有/排他ロックsx(9)を使った実装に置き換えるもので,結果的にパフォーマンスの向上,複数のスレッドをまたいで同時に発生するソケットIOにおけるコンテンションのよりよいハンドリングの実現などが実現されています。またこの変更によってソケットバッファmutexはソケットバッファデータ構造における同時操作のシリアライズにのみ責任を持つだけで,I/Oのシリアライゼーションについてまで考える必要がなくなっています。
また歴史的に存在してきた,長いI/O操作中にI/Oが交差することを許してしまうバグと,ソケットバッファI/Oシリアライゼーションロックの非ブロックの獲得失敗が無視されてしまうバグという二つのバグも修正されています。ただしシグナルハンドリングに関する不備も指摘されており,今後の作業でシグナルハンドリングの処理が追加実装される見通しです。

ports

net-p2p/bittyrant
net-p2p/gift-ares
Ports CollectionにBitTorrentクライアントプロトコルと互換性があるP2PアプリケーションBitTyrantのport(net-p2p/bittyrant)が追加されました。

コメント

コメントの記入