タグ

epollに関するiwwのブックマーク (6)

  • I/Oを多重化するためのシステムコール(select, poll, epoll, kqueue) - $shibayu36->blog;

    サーバ周りの勉強していると、たまにselectとかepollとか言葉が出てきて、理解できてなかったので調べてみた。 I/Oの多重化 例えばサーバ周りの実装を、特に何も考えずにやると、I/Oでブロッキングが発生し、一つのクライアントとしか通信できないということが起こります。これを解決するために fork threads I/Oの多重化 非同期I/O といった方法があります。 この中のI/Oの多重化を実装するためのシステムコールとして、select, poll, epoll, kqueueなどは実装されているようです。 少し調べてみると、次のような記述のような機能をそれぞれが実装するようです。 プログラムで複数のファイルディスクリプタを監視し、 一つ以上のファイルディスクリプタがある種の I/O 操作の 「ready (準備ができた)」状態 (例えば、読み込み可能になった状態) になるまで待つ

    I/Oを多重化するためのシステムコール(select, poll, epoll, kqueue) - $shibayu36->blog;
  • Man page of POLL

    iww
    iww 2015/03/20
  • Man page of EPOLL

    Section: Linux Programmer's Manual (7) Updated: 2019-03-06 Index JM Home Page roff page 名前 epoll - I/O イベント通知機能 書式 #include <sys/epoll.h> 説明 epoll API は poll(2) と同様の処理を行う、つまり、複数のファイルディスクリプタを監視し、その中のいずれかが入出力可能な状態であるかを確認する。 epoll API は、エッジトリガーインターフェースとレベルトリガーインターフェースのいずれとしても使用することができ、監視するファイルディスクリプターの数が多い場合にも使用できる。 The central concept of the epoll API is the epoll instance, an in-kernel data structu

    iww
    iww 2015/03/20
  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

    iww
    iww 2012/09/27
    自分の環境でもいっかい実測しないとダメか。 面倒くさいな
  • epollディスクリプタはスレッドセーフ? | はらけんブログ

  • エンタープライズ向けに刷新されたカーネル・コア

    マルチスレッド対応の強化 ■vcache vcacheは、仮想アドレスと物理ページの対応付けの変更をコールバック関数によって通知する仕組みである。 後述するfutexの実装に使用されるため、カーネル2.6に追加された。 ■futex(Fast Userspace Mutexes) futexは、伝統的なUNIXカーネルで使われているsleep/wakeupとよく似た同期機構をユーザーランドに対して提供する。 主にNPTL(Native POSIX Thread Library)などのライブラリの実装に使われるため、アプリケーションから直接利用することはあまりないと思われるが、POSIX ThreadはJavaスレッドの実装などにも用いられており、同期処理を多用するアプリケーションには利益があるだろう。 futexシステムコールの主な機能はFUTEX_WAITとFUTEX_WAKEである。

    エンタープライズ向けに刷新されたカーネル・コア
  • 1