タグ

epollに関するp33sakuraのブックマーク (2)

  • ファイルディスクリプタについて(6) ~多重I/Oの性能とC10K問題

    はじめに 前回は、複数のファイルディスクリプタを一元管理する「多重I/O」機能について紹介しました。今回は、多重I/Oの性能と問題点について検証していきます。 連載概要 第1回:ディスクリプタの概要 第2回:イベント用ディスクリプタ「eventfd」の特徴 第3回:タイマー用ディスクリプタ「timerfd」の特徴 第4回:シグナル用ディスクリプタ「signalfd」の特徴 第5回:多重I/O「Multiplex I/O」の種類の特徴、使い方 第6回:多重I/Oの性能とC10K問題 第7回:シグナル駆動I/Oの特徴、使い方 第8回:非同期I/O「Asynchronous I/O」の使い方と性能差 第9回:ファイルディスクリプタパッシングの特徴、使い方 サンプルプログラムは100行前後程度までは画面に記載します。全プログラムは圧縮してページ上部よりダウンロード可能にしています。makeコマンド

    ファイルディスクリプタについて(6) ~多重I/Oの性能とC10K問題
  • インターネットサーバでのPthreadとepoll(2)

    >>(1)よりつづく 前回は単純な実装からマルチスレッド、スレッドプールと順に見て行きました。今回はいよいよepollを使った実装を紹介します。 epoll例- 4epoll.c 多重I/Oすなわち select(2) / poll(2) によるイベントループはマルチスレッドが普及する以前から利用されていました。 select(2) / poll(2) は複数のファイルディスクリプタ(ソケット)を調べ、I/O可能なものを返すシステムコールです。ソケットに対する読み取りはデフォルトではデータがなければブロック(データが到着するまで待つ)しますが、事前にI/O可能かを確認しておけばブロックすることはありません。1システムコールで複数のソケットを調べられる点も重要で、1プロセスで複数のクライアントに並行して対応できるようになります。しかし当然ながら、対象ソケット数の増加に応じて処理量が増えます。

    インターネットサーバでのPthreadとepoll(2)
  • 1