@article{oai:naist.repo.nii.ac.jp:00003728, author = {河合, 栄治 and 門林, 雄基 and 山口, 英}, issue = {2}, journal = {情報処理学会論文誌}, month = {Feb}, note = {Unix上のサーバプログラムなどでネットワークI/Oを多重化するのによく用いられるselect( )やpoll( ) (多重化I/O)には,サーバ負荷の増加に対する性能のスケーラビリティに欠けるという問題がある.従来の解決手法は,これらの関数におけるソケットテーブルの走査を廃止し,特別なイベント通知機構を別途設けるものであった.しかし,これらの手法は,オペレーティングシステムの改造が必要であったり,プログラミングモデルの変更を要したりするため,導入コストが高いという別の問題がある.多重化I/Oにおいて真に問題なのは,ソケットテーブルの走査そのものではなく,多重化I/Oがそのイベント駆動的な処理構造により,必要以上に呼び出されてしまうことである.そこで本論文では,多重化I/Oの呼び出し間隔を制御することで,サーバの性能を向上させる手法を提案する.実際にWebサーバアクセラレータに本手法を実装してベンチークテストを行った結果,スループットで11?25%の向上が見られることが判明した.また,サービス遅延時間についても,同時ソケット数に応じて挙動が変化するものの,大きな改善が見られた.また,本手法はselect( )やpoll( )を用いた従来のプログラミングモデルを踏襲するため,適用コストが非常に小さいという特長も持つ., Although network I/O polling with select ( ) or poll ( ) is a strong and popular mechanism to handle concurrent sockets on a network server, there is a problem that they have poor performance scalability. Since the problem is believed to be caused by the overhead of scanning a large socket list, several solutions proposed so far provide special I/O event notification mechanisms that replace the socket list scanning. On the other hand, such solutions raise another problem that they require major modification in the operating system and/or in the programming model of I/O multiplexing, which makes their adoption difficult. The real problem of the I/O polling is its excessively frequent execution, not the processing cost of the socket list scanning. In this paper, we propose a unique and simple solution that improves the scalability of the I/O polling by controlling its execution intervals. This technique decreases the CPU cycles consumed by the I/O polling functions and improves server performance from a viewpoint of throughput and service response time. Because it does not alter the programming model of the traditional I/O polling, the implementation cost is low.}, pages = {391--401}, title = {ネットワークサーバにおける多重化I/Oの実行間隔制御による性能向上手法}, volume = {45}, year = {2004} }